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語言程式,以檢查兩個字串是否互為迴文。