Golang程序 寻找字符串中的重复字符
在golang中,识别在字符串中出现不止一次的字符是寻找重复字符的第1步。为了达到这个目的,在跟踪已经遇到的字符的同时,遍历字符串。然后,在添加一个字符之前,确定它是否已经在已经遇到过的字符集合中。如果一个字符已经存在于这个集合中,那么它就是一个重复的字符。让我们来看看它的执行情况。
方法1:使用地图和一个for循环
在这种方法中,程序使用一个地图来跟踪每个字符在字符串中出现的次数。然后,它在地图上进行迭代,并打印出计数大于1的任何字符。
语法
map
地图是Golang中一个预先建立的数据结构,可以实现键值对的存储和检索。地图的键必须是不同的,其值可以是任何数据类型。使用地图可以有效地存储和检索数据,它被实现为哈希表。可以使用[]操作符来添加、检索和删除项目,并且可以使用make()方法和map关键字来构建它们。
func make ([] type, size, capacity)
Go语言中的make函数用于创建一个数组/映射,它接受要创建的变量类型、大小和容量作为参数。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(format package)包,其中main产生可执行的Example:s,fmt帮助格式化输入和输出。
-
第2步 – 创建一个main函数,在该函数中创建一个字符串hello alexa,并将其分配给一个名为mystr的变量。
-
第 3步– 为了跟踪每个字符在字符串中出现的次数,初始化一个空图。
-
第 4步– 使用for循环来反复迭代字符串中的每个字符。
-
第5步– 为地图上的每个字符添加一个字符数,并利用for循环在地图上进行迭代。
-
第6步 – 检查地图上每个字符的计数是否超过1。如果是,则打印出字符和它的计数。
-
第7步 – 一旦字符串中的每个字符都被检查过,并检查是否有重复的情况,重复这个过程。
-
第8步 – 使用fmt.Println()函数在屏幕上打印重复的字符,其中ln表示新行。
例子
在这个例子中,我们将看到如何使用Map和for循环找到字符串中的重复字符
package main
import (
"fmt"
)
func main() {
mystr := "hello alexa" //create string
fmt.Println("The original string given here is:", mystr)
counts := make(map[rune]int)
for _, char := range mystr {
counts[char]++
}
fmt.Println("The duplicate characters in this string can be represented as:")
for char, count := range counts {
if count > 1 {
fmt.Printf("%c appears %d times\n", char, count) //print the duplicate characters on the screen
}
}
}
输出
The original string given here is: hello alexa
The duplicate characters in this string can be represented as:
e appears 2 times
l appears 3 times
a appears 2 times
方法2:使用计数变量
在这种方法中,程序使用一个地图跟踪输入字符串中每个字符的频率。然后,逐个迭代字符串中的字符,确定该字符在地图中是否有多个出现。如果有,就把它作为一个重复的字符打印到控制台。让我们看看这个例子:和算法。
语法
func make ([] type, size, capacity)
Go语言中的make函数用于创建一个数组/映射,它接受要创建的变量类型、其大小和容量作为参数。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(format package)包,main产生可执行的Example:s,fmt帮助格式化输入和输出。
-
第2步 – 创建一个函数main,并在该函数中设置一个变量input_value,其中包含你希望搜索的重复字符的字符串。
-
第 3步 – 为了存储输入字符串中每个字符的频率,创建一个名为counts的空图。
-
第4步– 使用for循环来反复迭代输入字符串中的每个字符。
-
第5步– 验证counts地图中每个字符的计数是否等于1。对于每个字符。如果是,将该字符打印到控制台,因为它是一个重复的字符。
-
第6步 – 如果该字符还不存在,则在每次迭代时将其添加到地图中,或者将计数增加1。
-
第7步 – 如果输入字符串中有任何重复的字符,输出将使用fmt.Println()函数打印到控制台,其中ln表示新行。
例子
在这个例子中,我们将使用计数变量找到字符串中的重复字符
package main
import (
"fmt"
)
func main() {
input_value := "hello,alexa!" //create string
fmt.Println("The original string given here is:", input_value)
counts := make(map[rune]int)
for _, char := range input_value {
if counts[char] == 1 {
fmt.Printf("'%c' is a duplicate character.\n", char)
}
counts[char]++ //increment the count
}
}
输出
The original string given here is: hello,alexa!
'l' is a duplicate character.
'e' is a duplicate character.
'a' is a duplicate character.
结论
我们用两个例子执行了寻找字符串中重复字符的程序。在第一个例子中,我们使用了map和for循环,在第二个例子中,我们使用count变量来保持计数。因此,程序成功执行。