golang 如何翻轉含有中文 數字 英文字母等任意字串
阿新 • • 發佈:2020-08-19
問題描述
翻轉含有 中文、數字、英文字母
等任意字串
示例
輸入:"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