shad-go/utf8/reverse/README.md
2023-10-03 20:25:41 +03:00

30 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# utf8reverse
Реализуйте функцию `reverse.Reverse`.
Функция принимает на вход юникодную строку и должна возвращать строку,
состоящую из тех же юникодных рун, но записанных в обратном порядке.
Каждый байт входной строки, который не образует корректную utf8 последовательность, нужно
заменить на unicode replacement character.
Обратите внимание в тестах, что некоторые графемы распадаются при обращении строки.
Данный эффект связан с тем, что в юникоде некоторые руны умеют комбинироваться в одну графему.
Ваша реализация должна быть достаточно эффективна. На нашем бенчмарке в тестовой системе
она должна работать не хуже авторского решения. Конкретно, можно делать не больше одной аллокации.
Это значит, что кроме выходной строки дополнительную память выделять нельзя. (Изучите тип [`strings.Builder`](https://pkg.go.dev/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/...
```