.. | ||
README.md | ||
reverse.go | ||
reverse_test.go |
utf8reverse
Реализуйте функцию reverse.Reverse
.
Функция принимает на вход юникодную строку и должна возвращать строку, состоящую из тех же юникодных рун, но записанных в обратном порядке.
Каждый байт входной строки, который не образует корректную utf8 последовательность, нужно заменить на unicode replacement character.
Обратите внимание в тестах, что некоторые графемы распадаются при обращении строки. Данный эффект связан с тем, что в юникоде некоторые руны умеют комбинироваться в одну графему.
Ваша реализация должна быть достаточно эффективна. На нашем бенчмарке в тестовой системе
она должна работать не хуже авторского решения. Конкретно, можно делать не больше одной аллокации.
Это значит, что кроме выходной строки дополнительную память выделять нельзя. (Изучите тип strings.Builder
)
goos: linux
goarch: amd64
pkg: gitlab.com/manytask/itmo-go/public/utf8/reverse
BenchmarkReverse-4 395078 2763 ns/op 1792 B/op 2 allocs/op
PASS
Примеры
Как запустить все тесты:
go test -v ./utf8/reverse/...