我正在尝试进行一项练习,其中我必须扭转一些弦乐。我听说Go strings.Builder是目前创建字符串的最快方法,所以我做了以下工作:
func String(toReverse string) string {
var reversedString strings.Builder
for i := len(toReverse) - 1; i >= 0; i-- {
reversedString.WriteByte(toReverse[i])
}
return reversedString.String()
}
问题是这不适用于像这样的多字节测试用例:
变成
谢谢。
最佳答案
尽管可以(默认情况下)通过索引访问字符串的各个字节,但Go字符串也可以转换为代表各个Unicode代码点的 rune 数组。
首先,您需要将字符串转换为[] rune ,然后对其进行迭代:
func String(toReverse string) string {
var reversedString strings.Builder
runes := []rune(toReverse)
for i := len(runes) - 1; i >= 0; i-- {
reversedString.WriteRune(runes[i])
}
return reversedString.String()
}
有关实时演示,请参见https://play.golang.org/p/WYn_MGAGw_x。