Golang 交换字符对

Golang 交换字符对

Golang中的字符串是字符的集合。由于Go中的字符串是不可变的,因此它们在生成之后无法进行修改。然而,可以通过将字符串连接或添加到现有字符串来创建新的字符串。作为Go中的内置类型,字符串类型可以像任何其他数据类型一样以各种方式使用。接下来,让我们看看如何执行该逻辑。在本文中,我们将介绍使用不同示例集合中的方法来交换字符串中的字符对。

语法

func len(v Type) int

len() 函数用于获取任何参数的长度。它接受一个参数作为数据类型变量,我们希望找到它的长度,并返回整数值,这是变量的长度。

方法1:将字符串转换为字节切片

在将字符串转换为字节切片后,该方法以2的增量迭代输入字符串。使用多重赋值语句,在每次迭代后将当前字符与后面的字符进行交换。然后,将所得到的字节切片改回字符串并返回。

步骤

  • 步骤1 - 创建一个package main,并在程序中声明fmt(格式化包)包,其中main生成可执行示例,而fmt帮助格式化输入和输出。

  • 步骤2 - 创建一个swap_pairs函数,并在该函数中从输入字符串创建一个字节切片。

  • 步骤3 - 将变量i的值设置为0,并使用for循环遍历字节,每次增加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: 创建一个 main 包并在该程序中声明 fmt(格式化包) 包,其中 main 生成可执行的示例并且 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

结论

我们通过两个示例来执行字符对的交换程序。在第一个示例中,我们使用了字符串到字节的转换,而在第二个示例中,我们使用了递归来交换字符。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程