Go語言程式查詢字串的所有子集


Go語言中的字串是字元的集合。由於Go語言中的字串是不可變的,因此一旦生成,就不能修改。但是,連線或新增到現有字串可以建立新的字串。作為Go語言中的內建型別,字串型別可以像任何其他資料型別一樣以多種方式使用。

演算法

  • 步驟 1 − 建立一個名為 main 的包,並在程式中宣告 fmt(格式化包)和 sort 包,其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 建立一個 main 函式,並在該函式中建立一個字串,並使用 Go 語言中的 print 語句將其列印到控制檯。

  • 步驟 3 − 從控制檯呼叫函式 subset_string,並將字串作為輸入包含在其中。

  • 步驟 4 − 在函式中,首先將名為 size 的變數初始化為輸入字串的長度。

  • 步驟 5 − 然後,使用外部迴圈迭代 0 到 2(size)-1 之間的所有整數,其中每個整數的位對應於輸入字串中的一個字元。

  • 步驟 6 − 它在內部迴圈中檢查當前整數 I 的第 j 位。如果第 j 位設定為 1,則輸入字串的第 j 個字元是當前子集的一部分。

  • 步驟 7 − 然後將字元新增到子集中,並隨後列印子集。

  • 步驟 8 − 直到識別並打印出輸入字串的每個子集,外部迴圈才會繼續。

  • 步驟 9 − 使用 fmt.Println() 函式執行 print 語句,其中 ln 表示換行。

  • 步驟 10 − 該演算法利用位操作的概念,透過迭代 0 到 2^size-1 之間的所有整數並檢查每個位來確定將哪些字元包含在當前子集中,從而生成輸入字串的所有可能的子集。

示例 1

在本例中,我們將瞭解如何使用位操作方法獲取字串的所有子集。

package main
import "fmt"

func subset_string(string_val string) {
   size := len(string_val) //denotes length of input string
   for i := 0; i < (1 << uint(size)); i++ {
      subset := ""
      for j := 0; j < size; j++ {
         if i&(1<<uint(j)) != 0 {
            subset += string(string_val[j])
         }
      }
      fmt.Print(subset + " ") //subset is subsequently printed
   }
}
func main() {
   string_val := "rit" //Create a string
   fmt.Println("The initial string created here is:", string_val)
   fmt.Println("The subsets of the string created is:")
   subset_string(string_val)
}

輸出

The initial string created here is: rit
The subsets of the string created is:
 r i ri t rt it rit 

示例 2

此示例使用名為 subsets 的遞迴函式。

package main
import "fmt"

func subsets(mystr string, start int, subset string) {
   fmt.Println(subset)
   for i := start; i < len(mystr); i++ { //run a loop till the length of mystr
      subsets(mystr, i+1, subset+string(mystr[i]))
   }
}
func main() {
   mystr := "rit" //Create string
   fmt.Println("The original string created here is:", mystr)
   subsets(mystr, 0, "") //call the function subsets with three arguments
}

輸出

The original string created here is: rit

r
ri
rit
rt
i
it
t

結論

我們使用兩個示例執行了查詢字串所有子集的程式。在第一個示例中,我們使用了位操作方法,在第二個示例中,我們使用了遞迴方法來執行程式。兩個程式都給出了類似的子集輸出。因此,程式執行成功。

更新於: 2023年2月13日

658 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.