Go語言程式交換字元對


Go 語言中的字串是字元的集合。由於 Go 中的字串是不可變的,因此在生成後無法修改。但是,連線或新增到現有字串可以建立新的字串。作為 Go 中的內建型別,字串型別可以像任何其他資料型別一樣以多種方式使用。讓我們看看如何執行邏輯。在本文中,我們將介紹使用不同示例在字串中交換字元對的方法。

語法

func len(v Type) int

len() 函式用於獲取任何引數的長度。它將要查詢長度的資料型別變數作為引數,並返回一個整數,該整數是變數的長度。

方法 1:透過將字串轉換為位元組切片

在這裡,該方法在將輸入字串轉換為位元組切片後,以 2 為增量遍歷輸入字串。在每次迭代後,它使用多重賦值語句將當前字元與下一個字元交換。之後,將獲得的位元組切片更改回字串並返回。

演算法

  • 步驟 1 - 建立一個 package main 並宣告 fmt(格式化包)包在程式中,其中 main 生成可執行的 Example:s,而 fmt 幫助格式化輸入和輸出。

  • 步驟 2 - 建立一個函式 swap_pairs,並在該函式中從輸入字串建立位元組切片。

  • 步驟 3 - 將變數 i 的值設定為 0,並使用 for 迴圈遍歷位元組,每次增加 i 2。

  • 步驟 4 - 在 for 迴圈內使用多重賦值語句交換當前字元(索引為 i)和下一個字元(索引為 i+1)。

  • 步驟 5 - 在 for 迴圈終止後返回字串到位元組切片的轉換,並使用 fmt.Println() 函式在控制檯上列印輸出,其中 ln 表示換行。

  • 步驟 6 - 它只遍歷字串一次並在位元組切片上“就地”執行交換操作,這種方法可以有效地交換輸入字串中的字元對。

示例

在這個示例中,我們將看到如何透過將字串轉換為位元組來交換字元對。

package main
import (
   "fmt"
)

func swap_pairs(str string) string {
   b := []byte(str)  //convert the string to byte
   for i := 0; i < len(b)-1; i += 2 {
      b[i], b[i+1] = b[i+1], b[i] //swap the pair of characters
   }
   return string(b)  //return the swapped string
}

func main() {
	str := "hello" //create a string 
	fmt.Println("The string created here is:", str)
	fmt.Println("The string with characters swapped is:")
	fmt.Println(swap_pairs(str))   //print the swapped string on the screen 
}

輸出

The string created here is: hello
The string with characters swapped is:
ehllo

方法 2:使用遞迴方法

在這個示例中,我們將看到如何使用遞迴交換字元對。該函式使用遞迴重複交換字串的前兩個字元,然後將剩餘的字元傳遞給後續呼叫。當輸入字串包含少於兩個字元時,遞迴的基本情況,字串將以其原始形式返回。每個遞迴呼叫都會返回字串的第一個字元與第二個字元的連線,以及將傳送到後續遞迴呼叫的字串的其餘部分。讓我們看看示例:和演算法以瞭解其執行情況。

演算法

  • 步驟 1 - 建立一個 package main 並宣告 fmt(格式化包)包在程式中,其中 main 生成可執行的 Example:s,而 fmt 幫助格式化輸入和輸出。

  • 步驟 2 - 建立一個帶有字串引數的函式 swap_pairs_recursive,該引數的字元對需要交換。

  • 步驟 3 - 在函式中,驗證輸入字串是否只有兩個字元或更少。如果是這種情況,則只需返回字串。

  • 步驟 4 - 如果輸入字串的長度大於 2,則返回第二個字元與第一個字元的連線,以及對從輸入字串的第三個字元開始的子字串執行 swap_pairs_recursive 的結果。

  • 步驟 5 - 在輸入字串上呼叫 swap_pairs_recursive 函式。

  • 步驟 6 - 使用 fmt.Println() 函式列印函式呼叫的輸出,其中 ln 表示換行。

  • 步驟 7 - 這種方法使用遞迴將剩餘的字元傳遞給後續遞迴呼叫,同時重複交換輸入字串的前兩個字元。由於需要多次函式呼叫和字串連線,因此它不如先前的方法有效。

示例

在這個示例中,我們將看到如何使用遞迴交換字元對。

package main
import (
   "fmt"
)

func swap_pairs_recursive(str string) string {
   if len(str) < 2 {
      return str //return the string if the length is less than 2
   }
   return str[1:2] + str[0:1] + swap_pairs_recursive(str[2:]) //swap the characters recursively
}

func main() {
   str := "hello" //create the string
   fmt.Println("The string created here is:", str)
   fmt.Println("The string with characters swapped is:")
   fmt.Println(swap_pairs_recursive(str)) //print the swapped string recursively
}

輸出

The string created here is: hello
The string with characters swapped is:
ehllo

結論

我們使用兩個示例執行了交換字元對的程式。在第一個示例中,我們使用了字串到位元組的轉換,在第二個示例中,我們使用了遞迴來交換字元。

更新於: 2023年2月20日

719 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告