Go语言程序:检查两个字符串是否互为回文


在本教程中,我们将学习如何使用Go语言程序检查给定的两个字符串是否互为回文。

回文是指通过重新排列另一个单词或短语的字母而形成的单词或短语,并且使用了所有字母且只使用一次。

例如 “Roles”的回文词是“loser”

Binary anagram word is brainy

下面的示例演示了如何使用内置的`make()`函数创建空映射。`make`函数分配并初始化哈希映射数据结构,并返回指向它的映射值。该数据结构的细节是运行时的实现细节,语言本身并未指定。Go提供内置的映射类型来实现哈希表。映射是Go语言的内置数据类型,类似于哈希表,它将键映射到值。映射的格式如下:`map[key_type]value_type`。`key_type`和`value_type`可以是不同类型或相同类型。映射是无序且可更改的集合,不允许重复。

语法

map[KeyType]ValueType

其中`KeyType`可以是任何可比较的类型,而`ValueType`可以是任何类型,包括另一个映射。

使用两个单独函数的Go程序代码示例,用于检查两个字符串是否互为回文

算法

  • 步骤1 − 导入`fmt`包。

  • 步骤2 − 创建函数`Anagram()`。

  • 步骤3 − 声明并初始化字符串变量。

  • 步骤4 − 调用并使用`make()`函数返回映射。

  • 步骤5 − 使用`for range`循环迭代映射以检查回文条件。

  • 步骤6 − 开始`main()`函数。

  • 步骤7 − 调用`Anagram()`函数以检查两个字符串是否互为回文。

  • 步骤8 − 使用`fmt.Println()`打印结果。

示例

// GOLANG PROGRAM TO CHECK IF TWO STRINGS ARE ANAGRAMS package main // fmt package allows us to print anything on the screen. import "fmt" // Create the function Anagram () to check if two strings are anagram func Anagram(s string, t string) bool { // initializing the variables string1 := len(s) string2 := len(t) fmt.Println("Letter 1 =", s, "\nLetter 2 =", t) fmt.Println("Is it an Anagram ?") if string1 != string2 { return false } // create and initialize a map anagramMap // Using make () function anagramMap := make(map[string]int) // As we already know that make() function // always returns a map which is initialized // Iterating map using for range loop // Traverse the first string and increase the count of each character in the map for i := 0; i < string1; i++ { anagramMap[string(s[i])]++ } // Traverse the second string and decrease the count of each character in the map for i := 0; i < string2; i++ { anagramMap[string(t[i])]-- } // Traverse the first string again and if for any character the count // is non-zero in the map then return false for i := 0; i < string1; i++ { if anagramMap[string(s[i])] != 0 { // if this condition satisfies return false return false } } // In the end return true return true } // start the function main () // GO program execution starts with the function main () func main() { fmt.Println("Golang program to to check if two strings are anagram") // Calling the function Anagram () to check if the two strings are anagram output := Anagram("listen", "silent") fmt.Println(output) // Calling the function Anagram () to check if the two strings are anagram output = Anagram("man", "name") fmt.Println(output) // print the result using the function fmt.Println () }

输出

Golang program to check if two strings are anagram

Golang program to to check if two strings are anagram
Letter 1 = listen
Letter 2 = silent
Is it an Anagram ?
true
Letter 1 = man
Letter 2 = name
Is it an Anagram ?
False

代码描述

  • 在上面的程序代码中,我们首先声明`main`包,它告诉编译器该包应编译为可执行程序而不是共享库。

  • 我们导入了包含`fmt`包文件的`fmt`包。此包与格式化输入和输出有关。

  • 接下来,我们创建函数`Anagram()`来检查给定的两个字符串是否互为回文。

  • 接下来,我们声明并初始化字符串变量`string1= len (s)`和`string2 := len (t)`。

  • 我们使用内置的`make()`函数创建并初始化映射`anagramMap`,该函数分配并初始化哈希映射数据结构,并返回指向它的映射值。

  • 接下来,我们使用for循环分析代码条件并返回值。

  • 在第25行 `anagramMap[string(s[i])]++`:我们遍历第一个字符串,并增加映射中每个字符的计数。在第30行:`anagramMap[string(t[i])]--`:我们遍历第二个字符串,并减少映射中每个字符的计数。

  • 在第36行 `if anagramMap[string(s[i])] != 0 {return false}`:我们再次遍历第一个字符串,如果映射中任何字符的计数非零,则返回`false`,否则最终返回`true`。

  • 现在我们开始`main()`函数,这个函数是可执行程序的入口点。它既不接受任何参数也不返回任何值。

  • 在`main()`函数下,我们调用`Anagram()`函数来检查两个字符串是否互为回文。

  • 最后,我们使用`fmt.Println()`函数在屏幕上打印结果。此函数在`fmt`包中定义,它有助于写入标准输出。

结论

在上面的示例中,我们成功地编译并执行了Go语言程序,以检查两个字符串是否互为回文。

更新于:2022年11月15日

浏览量:1000+

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.