問題描述
翻轉含有 中文、數字、英文字母
等任意字符串
示例
輸入:"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