Golang 在字符串中查找重复字符

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程