Golang 在字符串中查找重复字符
在Golang中,识别字符串中出现多次的字符是找到重复字符的第一步。为了实现这个目标,遍历字符串时要跟踪已经遇到的字符。然后,在添加字符之前,确定它是否已经在已经遇到的字符集合中。如果字符已经存在于集合中,那么它是一个重复字符。让我们看看它的执行过程。
方法1:使用映射和for循环
在这种方法中,程序使用映射来跟踪字符串中每个字符出现的次数。然后,迭代映射并打印出任何出现次数大于1的字符。
语法
map
地图是Golang中的预先构建的数据结构,可以实现键值对的存储和检索。地图的键需要是唯一的,其值可以是任何数据类型。可以通过地图高效地存储和检索数据,地图实际上是以哈希表的形式实现的。可以使用[]运算符添加、检索和删除项,也可以使用make()方法和map关键字构建地图。
func make ([] type, size, capacity)
在go语言中,make函数用于创建数组/映射,它接受要创建的变量的类型、大小和容量作为参数
步骤
- 第1步 - 创建一个main包,并在其中声明fmt(格式化包)包。在main函数中生成可执行示例,并使用fmt帮助格式化输入和输出。
-
第2步 - 创建一个main函数,在该函数中创建一个名为mystr的变量,并将其赋值为字符串”hello alexa”。
-
第3步 - 初始化一个空映射,以跟踪字符串中每个字符出现的次数。
-
第4步 - 使用for循环重复迭代字符串中的每个字符。
-
第5步 - 为映射中的每个字符的计数加1,并使用for循环遍历映射。
-
第6步 - 检查映射中每个字符的计数是否大于1。如果是,则打印出该字符及其计数。
-
第7步 - 一旦对字符串中的每个字符进行了检查并检查了重复,重复此过程。
-
第8步 - 使用fmt.Println()函数将重复的字符打印到屏幕上,其中ln表示换行。
示例
在此示例中,我们将看到如何使用映射和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(格式化包)包,其中main产生可执行程序示例,fmt用于格式化输入和输出。
-
步骤2 - 创建一个主函数(main),并在该函数中设置一个变量input_value,用于指定要搜索重复字符的字符串。
-
步骤3 - 为了存储输入字符串中每个字符的频率,创建一个空的映射(counts)。
-
步骤4 - 使用for循环重复迭代输入字符串中的每个字符。
-
步骤5 - 验证counts映射中每个字符的计数是否等于1。如果是,则打印该字符到控制台,因为它是一个重复字符。
-
步骤6 - 对于每次迭代,如果字符尚不存在,则将字符添加到映射中,否则增加计数。
-
步骤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循环,在第二个示例中,我们使用了计数变量来进行计数。因此,程序执行成功。
极客笔记