shad-go/utf8/reverse
2023-02-20 11:34:21 +00:00
..
README.md Update README.md 2023-02-20 11:34:21 +00:00
reverse.go go fix old build tags. 2022-03-15 23:49:56 +03:00
reverse_test.go Update utf8 task 2021-02-18 13:57:48 +03:00

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