shad-go/utf8/reverse/README.md

1.7 KiB
Raw Permalink Blame History

utf8reverse

Реализуйте функцию reverse.Reverse.

Функция принимает на вход юникодную строку и должна возвращать строку, состоящую из тех же юникодных рун, но записанных в обратном порядке.

Каждый байт входной строки, который не образует корректную utf8 последовательность, нужно заменить на unicode replacement character.

Обратите внимание в тестах, что некоторые графемы распадаются при обращении строки. Данный эффект связан с тем, что в юникоде некоторые руны умеют комбинироваться в одну графему.

Ваша реализация должна быть достаточно эффективна. На нашем бенчмарке в тестовой системе она должна работать не хуже авторского решения. Конкретно, можно делать не больше одной аллокации. Это значит, что кроме выходной строки дополнительную память выделять нельзя. (Изучите тип strings.Builder)

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/...