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循环;在第二个示例中,我们使用了计数变量来计数。因此,程序成功执行。

更新于:2023年2月20日

2K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告