shad-go/utf8reverse/solution.go

25 lines
404 B
Go
Raw Normal View History

2020-02-24 19:54:48 +00:00
// +build solution
package utf8reverse
import (
"unicode/utf8"
)
func Reverse(input string) string {
rs := []rune{}
sz := 0
for len(input) > 0 {
r, n := utf8.DecodeRuneInString(input)
rs = append(rs, r)
sz += utf8.RuneLen(r)
input = input[n:]
}
bs := make([]byte, sz)
for i, j := 0, 0; i < len(rs); i++ {
n := utf8.EncodeRune(bs[j:], rs[len(rs)-i-1])
j += n
}
return string(bs)
}