Golang 查找字符串中字符的频率
Golang中的字符串是字符的集合。由于Go中的字符串是不可变的,一旦生成就无法修改。然而,可以通过连接或添加到现有字符串来创建新的字符串。字符的频率表示字符出现的次数。
语法
map()
为了跟踪输入字符串中每个字符的出现频率,下面的示例中使用了Go语言中内置的map数据结构。该map是一个无序的键值对集合,具有唯一的键和值的可变类型。
func make ([] type, size, capacity)
在go语言中,make函数用于创建数组/映射,它接受要创建的变量类型、大小和容量作为参数。
步骤
- 步骤1 − 创建一个main包并声明fmt(格式包)包。
-
步骤2 − 创建一个main函数,在该函数中创建一个字符串,要计算其字符频率。
-
步骤3 − 使用用户定义的或内部函数找出字符串中字符的频率。
-
步骤4 − 使用fmt.Println()函数打印输出,其中ln表示换行。
示例1
在这个示例中,我们将学习如何使用映射在字符串中找到字符的频率。这里,映射将保存字符的频率,输出将是一个打印有每个字符频率的映射。
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函数。