Golang 检查两个字符串是否是变位词
在本教程中我们将学习如何使用Go编程语言来检查给定的两个字符串是否是彼此的变位词。
通过使用所有的字母并仅使用一次,通过重新排列不同单词或短语的字母形成的单词或短语被称为变位词。
例如 − “Roles”是一个变位词,可组成单词”loser”。
Binary anagram word is brainy
下面的示例显示如何使用内置的make()函数创建一个空映射。make函数分配和初始化一个哈希映射数据结构,并返回一个指向该结构的映射值。该数据结构的具体实现细节是运行时的实现细节,并不由语言本身指定。Go提供了一个内置的映射类型,实现了哈希表。映射是一种类似于哈希表的内置数据类型,它将键映射到一个值。下面是映射的格式:map[key_type]value_type。key_type和value_type都可以是不同类型或相同类型。映射是一个无序且可更改的集合,不允许重复。
语法
map[KeyType]ValueType
KeyType可以是可比较的任何类型,ValueType可以是任何类型,包括另一个map。
使用两个独立函数的Go程序代码示例来检查两个字符串是否为变位词
步骤
- 步骤1 - 导入fmt包。
-
步骤2 - 创建函数 Anagram() 。
-
步骤3 - 声明并初始化字符串变量。
-
步骤4 - 调用并使用 make() 函数返回一个map。
-
步骤5 - 使用for range循环迭代map以检查变位词条件。
-
步骤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
代码描述
-
在上面的程序代码中,首先我们声明了主要的包,这告诉编译器该包应该编译为可执行程序而不是共享库
-
我们导入了fmt包,该包包含了fmt包的文件。这个包主要用于格式化输入和输出
-
接下来,我们创建了函数 Anagram() 来检查两个给定的字符串是否互为变位词
-
然后,我们声明并初始化了字符串变量string1 = len(s)和string2 := len(t)
-
我们使用内置的 make() 函数创建并初始化了一个map变量anagramMap,该函数分配和初始化了一个哈希映射数据结构,并返回一个指向它的map值。
-
接下来,我们使用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语言程序,以检查两个字符串是否互为变位词。