Golang程序 检查两个字符串是否为嵌套
在本教程中,我们将学习如何使用Go编程语言检查给定的两个字符串是否是彼此的变形符号。
将一个不同的单词或短语的字母重新排列,并准确地使用所有的字母,形成的单词或短语被称为变形词。
例子- 角色的变位词是失败者
Binary anagram word is brainy
下面的例子显示了如何使用内置的make()函数创建一个空地图。make函数分配和初始化了一个哈希图数据结构,并返回一个指向该结构的地图值。该数据结构的具体细节是运行时的实现细节,并不是由语言本身指定的。Go提供了一个内置的map类型,实现了一个哈希表。地图是golang内置的数据类型,类似于哈希表,将一个键映射到一个值。.下面是一个地图的格式: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循环迭代地图,以检查Anagram条件。
-
第6步- 启动 函数main()。
-
第7步 – 调用函数 Anagram() 来检查两个字符串是否为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行 -- 如果anagramMap [string (s [i])] !=0 {return false}:我们再次遍历第一个字符串,如果任何字符在地图中的计数为非零,则返回false,最后返回true。
-
现在我们开始使用函数main(),这个函数是可执行程序的入口点。它不接受任何参数,也不返回任何东西
-
在 main() 函数下 , 我们调用 Anagram() 函数来检查两个字符串是否是彼此的嵌合体。
-
最后,我们使用 fmt.Println() 函数将结果打印在屏幕上。这个函数定义在fmt包下,它有助于编写标准输出。
总结
在上面的例子中,我们已经成功地编译并执行了Go语言程序,以检查两个字符串是否为彼此的变形。