翻转含有 中文、数字、英文字母
等任意字符串git
输入:"he師l發lo,世。+-*界,6" 输出:"6,界*-+。世,ol發l師eh"
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
能够表示更多的字符,能够处理一切字符。golang
所以,将字符串转为 rune
的切片,再进行翻转,便可解决。网站
固然,你也能够写 []int32
。ui
在 go 的源码中:指针
type byte = uint8 type rune = int32
欢迎访问个人我的网站:code
李培冠博客:lpgit.com字符串