Go語言程式查詢字串中的重複字元
在Go語言中,識別字符串中出現多次的字元是查詢重複字元的第一步。為此,在迭代字串的同時,跟蹤已經遇到的字元。然後,在新增字元之前,確定它是否已存在於已遇到的字元集中。如果字元已存在於集合中,則該字元是重複的。讓我們看看它的執行。
方法一:使用map和for迴圈
在這個方法中,程式使用一個map來跟蹤字串中每個字元出現的次數。然後,它迭代map並打印出計數大於1的任何字元。
語法
map
map是Go語言中一種預構建的資料結構,它允許儲存和檢索鍵值對。map的鍵必須是唯一的,而值可以是任何資料型別。map使用雜湊表實現,可以高效地儲存和檢索資料。可以使用[]運算子新增、檢索和刪除項,並且可以使用make()函式和map關鍵字來構造它們。
func make ([] type, size, capacity)
Go語言中的make函式用於建立陣列/map,它接受要建立的變數型別、大小和容量作為引數。
演算法
步驟1 − 建立一個main包,並在程式中宣告fmt(格式化包),其中main產生可執行檔案示例,fmt幫助格式化輸入和輸出。
步驟2 − 建立一個main函式,在這個函式中建立一個字串“hello alexa”並將其賦值給名為mystr的變數。
步驟3 − 初始化一個空map來跟蹤字串中每個字元出現的次數。
步驟4 − 使用for迴圈重複迭代字串中的每個字元。
步驟5 − 為map中的每個字元增加計數,並使用for迴圈迭代map。
步驟6 − 檢查map中每個字元的計數是否大於1。如果是,則打印出字元及其計數。
步驟7 − 完成對字串中每個字元的檢查和重複檢查後,重複此過程。
步驟8 − 使用fmt.Println()函式(其中ln表示換行)將重複字元列印到螢幕上。
示例
在這個示例中,我們將看到如何使用map和for迴圈查詢字串中的重複字元。
package main import ( "fmt" ) func main() { mystr := "hello alexa" //create string fmt.Println("The original string given here is:", mystr) counts := make(map[rune]int) for _, char := range mystr { counts[char]++ } fmt.Println("The duplicate characters in this string can be represented as:") for char, count := range counts { if count > 1 { fmt.Printf("%c appears %d times\n", char, count) //print the duplicate characters on the screen } } }
輸出
The original string given here is: hello alexa The duplicate characters in this string can be represented as: e appears 2 times l appears 3 times a appears 2 times
方法二:使用計數變數
在這個方法中,程式使用map跟蹤輸入字串中每個字元的頻率。然後,逐個字元迭代字串,確定map中該字元的出現次數是否超過一次。如果是,則將其作為重複字元列印到控制檯。讓我們看看示例和演算法。
語法
func make ([] type, size, capacity)
Go語言中的make函式用於建立陣列/map,它接受要建立的變數型別、大小和容量作為引數。
演算法
步驟1 − 建立一個main包,並在程式中宣告fmt(格式化包),其中main產生可執行檔案示例,fmt幫助格式化輸入和輸出。
步驟2 − 建立一個main函式,在這個函式中設定一個名為input_value的變數,其中包含要搜尋重複字元的字串。
步驟3 − 建立一個名為counts的空map,用於儲存輸入字串中每個字元的頻率。
步驟4 − 使用for迴圈重複迭代輸入字串中的每個字元。
步驟5 − 對於每個字元,驗證counts map中該字元的計數是否等於1。如果是,則列印該字元到控制檯,因為它是一個重複字元。
步驟6 − 如果該字元不存在,則在每次迭代中將該字元新增到map中,或者將計數增加1。
步驟7 − 如果輸入字串中存在任何重複字元,則使用fmt.Println()函式(其中ln表示換行)將輸出列印到控制檯。
示例
在這個示例中,我們將使用計數變數查詢字串中的重複字元。
package main import ( "fmt" ) func main() { input_value := "hello,alexa!" //create string fmt.Println("The original string given here is:", input_value) counts := make(map[rune]int) for _, char := range input_value { if counts[char] == 1 { fmt.Printf("'%c' is a duplicate character.\n", char) } counts[char]++ //increment the count } }
輸出
The original string given here is: hello,alexa! 'l' is a duplicate character. 'e' is a duplicate character. 'a' is a duplicate character.
結論
我們使用兩個示例執行了查詢字串中重複字元的程式。在第一個示例中,我們使用了map和for迴圈;在第二個示例中,我們使用了計數變數來計數。因此,程式成功執行。