Go语言程序查找字符串中字符的频率


Go 语言中的字符串是字符的集合。由于 Go 中的字符串是不可变的,因此在生成后无法修改。但是,连接或添加到现有字符串可以创建新的字符串。字符的频率是指字符出现的次数。

语法

map()

为了跟踪输入字符串中每个字符出现的频率,下面的示例使用了 Go 中内置的 map 数据结构。map 是一个无序的键值对集合,具有唯一的键和可变类型的值。

func make ([] type, size, capacity)

Go 语言中的 make 函数用于创建数组/map,它接受要创建的变量类型、大小和容量作为参数。

算法

  • 步骤 1 − 创建一个 package main 并声明 fmt(格式化包)包。

  • 步骤 2 − 创建一个 main 函数,并在该函数中创建一个要计算字符频率的字符串。

  • 步骤 3 − 使用用户定义或内部函数查找字符串中字符的频率。

  • 步骤 4 − 使用 fmt.Println() 函数打印输出,其中 ln 表示换行。

示例 1

在本例中,我们将学习如何使用 map 查找字符串中字符的频率。这里,map 将保存字符的频率,输出将是一个打印每个字符频率的 map。

package main
import (
	"fmt"
)

func main() {
	mystr := "hello alexa" //create a string
	fmt.Println("The string given here is:", mystr)
	frequency := make(map[rune]int)  //create frequency map using make function

	for _, val := range mystr {
		frequency[val]++ //assign frequencies 
	}

	fmt.Println("The frequency of characters in the string is:")

	fmt.Println(frequency)  //print frequency map
}

输出

The string given here is: hello alexa
The frequency of characters in the string is:
map[120:1 104:1 101:2 108:3 111:1 32:1 97:2]

示例 2

在本例中,我们将学习如何使用 if-else 语句计算字符串中字符的频率。基本上,此条件语句将用于检查频率 map 中是否存在字符。

package main
import (
	"fmt"
)

func main() {
	mystr := "hello alexa"  //create string
	fmt.Println("The string given here is:", mystr)
	frequency := make(map[rune]int)  //create frequency map using make function

	for _, val := range mystr {
		if _, ok := frequency[val]; ok {
			frequency[val]++
		} else {
			frequency[val] = 1  //assign frequencies
		}
	}
	fmt.Println("The frequency of characters in the string is:")

	fmt.Println(frequency) //print frequency map
}

输出

The string given here is: hello alexa
The frequency of characters in the string is:
map[97:2 120:1 104:1 101:2 108:3 111:1 32:1]

结论

我们使用两种方法执行了打印字符串中字符频率的程序。在第一种方法中,我们使用了 map,在第二个示例中,我们使用了 if-else 条件语句以及 map。

更新于: 2023年2月1日

749 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告