Go语言程序查找字符串中的重复字符
在Go语言中,识别字符串中出现多次的字符是查找重复字符的第一步。为此,在迭代字符串的同时,跟踪已经遇到的字符。然后,在添加字符之前,确定它是否已存在于已遇到的字符集中。如果字符已存在于集合中,则该字符是重复的。让我们看看它的执行。
方法一:使用map和for循环
在这个方法中,程序使用一个map来跟踪字符串中每个字符出现的次数。然后,它迭代map并打印出计数大于1的任何字符。
语法
map
map是Go语言中一种预构建的数据结构,它允许存储和检索键值对。map的键必须是唯一的,而值可以是任何数据类型。map使用哈希表实现,可以高效地存储和检索数据。可以使用[]运算符添加、检索和删除项,并且可以使用make()函数和map关键字来构造它们。
func make ([] type, size, capacity)
Go语言中的make函数用于创建数组/map,它接受要创建的变量类型、大小和容量作为参数。
算法
步骤1 − 创建一个main包,并在程序中声明fmt(格式化包),其中main产生可执行文件示例,fmt帮助格式化输入和输出。
步骤2 − 创建一个main函数,在这个函数中创建一个字符串“hello alexa”并将其赋值给名为mystr的变量。
步骤3 − 初始化一个空map来跟踪字符串中每个字符出现的次数。
步骤4 − 使用for循环重复迭代字符串中的每个字符。
步骤5 − 为map中的每个字符增加计数,并使用for循环迭代map。
步骤6 − 检查map中每个字符的计数是否大于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
方法二:使用计数变量
在这个方法中,程序使用map跟踪输入字符串中每个字符的频率。然后,逐个字符迭代字符串,确定map中该字符的出现次数是否超过一次。如果是,则将其作为重复字符打印到控制台。让我们看看示例和算法。
语法
func make ([] type, size, capacity)
Go语言中的make函数用于创建数组/map,它接受要创建的变量类型、大小和容量作为参数。
算法
步骤1 − 创建一个main包,并在程序中声明fmt(格式化包),其中main产生可执行文件示例,fmt帮助格式化输入和输出。
步骤2 − 创建一个main函数,在这个函数中设置一个名为input_value的变量,其中包含要搜索重复字符的字符串。
步骤3 − 创建一个名为counts的空map,用于存储输入字符串中每个字符的频率。
步骤4 − 使用for循环重复迭代输入字符串中的每个字符。
步骤5 − 对于每个字符,验证counts map中该字符的计数是否等于1。如果是,则打印该字符到控制台,因为它是一个重复字符。
步骤6 − 如果该字符不存在,则在每次迭代中将该字符添加到map中,或者将计数增加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循环;在第二个示例中,我们使用了计数变量来计数。因此,程序成功执行。