1. 程式人生 > 實用技巧 >golang 如何翻轉含有中文 數字 英文字母等任意字串

golang 如何翻轉含有中文 數字 英文字母等任意字串

問題描述

翻轉含有 中文、數字、英文字母 等任意字串

示例

輸入:"he師l發lo,世。+-*界,6"
輸出:"6,界*-+。世,ol發l師eh"

Golang 實現

package main

import "fmt"

func reverseString(s string) string {
	// 將字串轉換為 rune 型別的切片,並對該切片翻轉
	res := reverse([]int32(s))
	// 再把 rune 型別的切片轉為 string
	return string(res)
}

func reverse(s []int32) []rune {
	// 左右指標,對切片依次翻轉
	for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
		s[i], s[j] = s[j], s[i]
	}
	return s
}

func main() {
	s := "he師l發lo,世。+-*界,6"
	res := reverseString(s)
	fmt.Println(res)
}

rune 關鍵字是 int32 的別名,比 byte 可以表示更多的字元,可以處理一切字元。

因此,將字串轉為 rune 的切片,再進行翻轉,即可解決。

當然,你也可以寫 []int32

在 go 的原始碼中:

type byte = uint8

type rune = int32

李培冠部落格

歡迎訪問我的個人網站:

李培冠部落格:lpgit.com