Go语言程序检查给定字符串是否为Pangram
在本文中,我们将了解不同的 Go 语言示例,以检查给定的字符串是否为 Pangram。Pangram 也称为泛字,是一种包含字母表中每个字母至少一次的句子。在 Go 语言中,Pangram 是一个包含字母表中每个字母的字符串,不区分大小写。
语法
strings.ToLower(str)
使用 Go (golang) 中的字符串,您可以将字符串的大小写更改为小写。strings 包中的 ToLower() 函数。
func make ([] type, size, capacity)
Go 语言中的 make 函数用于创建数组/映射,它接受要创建的变量类型、其大小和容量作为参数
方法 1:使用映射
在这种方法中,我们将使用映射来检查给定的字符串是否为 Pangram。同时,我们将使用 ToLower 和 Make 等内部函数。
算法
步骤 1 − 创建一个 package main 并声明 fmt(格式化包)和 strings 包在程序中,其中 main 生成可执行文件示例:s 并且 fmt 有助于格式化输入和输出。
步骤 2 − 创建一个函数 isPangram,并在该函数内部使用 ToLower() 方法,使用该方法将给定字符串的大小写更改为小写
步骤 3 − 使用 make 函数创建一个映射来存储字符串中每个字母的频率。
步骤 4 − 逐个遍历字符串中的字符。
步骤 5 − 如果字符是字母,则增加映射中字符的频率,并对字母表中的每个字母(从“a”到“z”)重复此过程。
步骤 6 − 检查映射中当前字母的频率是否大于零,如果任何字母的频率为零,则返回 false。
步骤 7 − 如果所有字母频率的总和大于零,则返回 true。
步骤 8 − 通过计算每个字母的频率并确定它是否大于零,该算法确定字符串中是否存在字母表中的每个字母。如果每个字母的频率都为正,则该字符串被视为 Pangram。
示例
在此示例中,我们将了解如何使用映射检查给定的字符串是否为 Pangram
package main import ( "fmt" "strings" ) func isPangram(str string) bool { // make all characters lowercase str = strings.ToLower(str) // create a map to store the frequency of each character m := make(map[rune]int) // iterate over each character in the string for _, c := range str { // if the character is a letter, increase its frequency in the map if c >= 'a' && c <= 'z' { m[c]++ } } // check if the frequency of each letter is greater than zero for i := 'a'; i <= 'z'; i++ { if m[i] == 0 { return false } } return true } func main() { str := "I am a frontend developer" fmt.Println("The pangram is checked as:") if isPangram(str) { fmt.Println(str, "is a pangram") } else { fmt.Println(str, "is not a pangram") } }
输出
The pangram is checked as: I am a frontend developer is not a pangram
方法 2:使用集合
在这种方法中,我们将使用集合来检查给定的字符串是否为 Pangram。
算法
步骤 1 − 创建一个 package main 并声明 fmt(格式化包)和 strings 包在程序中,其中 main 生成可执行文件示例:s 并且 fmt 有助于格式化输入和输出。
步骤 2 − 创建一个函数 isPangram,并在该函数内部创建一个集合来存储字符串的唯一字符。
步骤 3 − 使用 strings.ToLower() 将给定字符串的大小写更改为小写。
步骤 4 − 逐个遍历字符串中的字符。
步骤 5 − 如果字符是字母,则将其添加到集合中,并验证集合是否包含 26 个元素。
步骤 6 − 如果集合中有 26 个不同的字符,则返回 true;如果集合中唯一字符少于 26 个,则返回 false。
步骤 7 − 通过将唯一字符添加到集合中并确定集合的长度是否为 26,该算法确定字符串中是否包含字母表中的每个字母。如果是,则返回 true;否则返回 false。如果字符串中包含字母表中的每个字母,则集合中将有 26 个不同的字符。
示例
在此示例中,我们将检查给定的字符串是否使用集合为 Pangram
package main import ( "fmt" "strings" ) func isPangram(str string) bool { // create a set to store the unique characters in the string using make function set_create := make(map[rune]bool) // make all the character lowercase str = strings.ToLower(str) // iterate over each character in the string for _, c := range str { // if the character is a letter, add it to the set if c >= 'a' && c <= 'z' { set_create[c] = true } } // check if the set contains 26 unique characters return len(set_create) == 26 } func main() { str := "I am a frontend developer" if isPangram(str) { fmt.Println(str, "is a pangram") } else { fmt.Println(str, "is not a pangram") } }
输出
I am a frontend developer is not a pangram
结论
我们使用两个示例执行了检查给定字符串是否为 Pangram 的程序。在第一个示例中,我们使用了映射,在第二个示例中,我们使用了集合来执行程序。