shad-go/utf8/reverse
2024-06-05 20:36:34 +03:00
..
README.md Updated to the most recent version, which uses go 1.22 2024-06-05 20:36:34 +03:00
reverse.go Implemented spacecollapse, optimized reverse 2024-06-03 04:29:30 +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/...