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迴圈;在第二個示例中,我們使用了計數變數來計數。因此,程式成功執行。

更新於:2023年2月20日

2K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告