shad-go/utf8/reverse/README.md

31 lines
1.7 KiB
Markdown
Raw Normal View History

2020-02-24 19:54:48 +00:00
# utf8reverse
Реализуйте функцию `reverse.Reverse`.
2020-02-24 19:54:48 +00:00
Функция принимает на вход юникодную строку и должна возвращать строку,
2020-02-26 09:17:51 +00:00
состоящую из тех же юникодных рун, но записанных в обратном порядке.
2020-02-24 19:54:48 +00:00
2021-02-18 10:57:48 +00:00
Каждый байт входной строки, который не образует корректную utf8 последовательность, нужно
заменить на unicode replacement character.
2021-02-18 10:37:40 +00:00
2020-02-24 19:54:48 +00:00
Обратите внимание в тестах, что некоторые графемы распадаются при обращении строки.
Данный эффект связан с тем, что в юникоде некоторые руны умеют комбинироваться в одну графему.
2021-02-18 10:37:40 +00:00
Ваша реализация должна быть достаточно эффективна. На нашем бенчмарке в тестовой системе
2021-02-18 10:49:29 +00:00
она должна работать не хуже авторского решения. Конкретно, можно делать не больше одной аллокации.
2023-02-20 11:34:21 +00:00
Это значит, что кроме выходной строки дополнительную память выделять нельзя. (Изучите тип [`strings.Builder`](https://pkg.go.dev/strings#Builder))
2021-02-18 10:37:40 +00:00
```
goos: linux
goarch: amd64
pkg: gitlab.com/slon/shad-go/utf8/reverse
2021-02-18 10:37:40 +00:00
BenchmarkReverse-4 395078 2763 ns/op 1792 B/op 2 allocs/op
PASS
```
2020-02-24 19:54:48 +00:00
### Примеры
Как запустить все тесты:
```
go test -v ./utf8/reverse/...
2020-02-24 19:54:48 +00:00
```