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 的程序。在第一个示例中,我们使用了映射,在第二个示例中,我们使用了集合来执行程序。

更新于: 2023年2月20日

471 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告