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