我正在尝试进行一项练习,其中我必须扭转一些弦乐。我听说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

09-18 22:25