24 lines
404 B
Go
24 lines
404 B
Go
// +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)
|
|
}
|