Golang程序 查找字符串中的字符频率
Golang中的字符串是一个字符的集合。由于Go中的字符串是不可改变的,所以在产生后不能修改。然而,串联或添加到现有的字符串中,可以创建新的字符串。一个字符的频率是指一个字符出现的次数。
语法
map()
为了跟踪每个字符在输入字符串中出现的频率,下面的例子中使用了Go中内置的map数据结构。地图是一个未经排序的键值对的集合,其键值是唯一的,值的类型是可变的。
func make ([] type, size, capacity)
Go语言中的make函数是用来创建数组/映射的,它接受要创建的变量类型、其大小和容量作为参数。
算法
- 第1步 – 创建一个包main并声明fmt(format package)包。
-
第2步 – 创建一个主函数,并在该函数中创建一个字符串,其字符频率将被计算。
-
第3步 – 使用用户定义的或内部的函数找到字符串中字符的频率。
-
第4 步 – 使用fmt.Println()函数打印输出,其中ln表示新行。
例子1
在这个例子中,我们将学习如何使用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语句计算字符串中的字符频率。基本上,这个条件语句将被用来检查频率图中的字符是否存在。
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。