- Разработайте класс WordStatIndex на языке Java, который будет подсчитывать статистику встречаемости слов во входной строке.
- Словом называется непрерывная последовательность букв, апострофов и тире (Unicode category Punctuation, Dash). Для подсчета статистики, слова приводятся к нижнему регистру.
- WordStatIndex должен реализовывать метод getStats, возвращающий строку, которая содержит все различные слова, встречающиеся во входной строке, в порядке их появления. Для каждого слова должна быть выведена одна строка, содержащая слово, число его вхождений во входной строке и номера вхождений этого слова среди всех слов во входной строке. Строки должны быть разделены между собой переносом строки.
- Кодировка строк: UTF-8.
- Программа должна работать за линейное от размера входной строки время.
- Для реализации программы используйте Collections Framework.
- Реализуйте и примените класс IntList, компактно хранящий список целых чисел. Для имплементации запрещается пользоваться коллекциями джавы. IntList минимально должен имплементировать Iterable.
- Примеры работы программы:
Входная строка:
"To be, or not to be, that is the question:"
Выходная строка:
"to 2 1 5
be 2 2 6
or 1 3
not 1 4
that 1 7
is 1 8
the 1 9
question 1 10"
In:
"Monday's child is fair of face.
Tuesday's child is full of grace."
Out:
"monday's 1 1
child 2 2 8
is 2 3 9
fair 1 4
of 2 5 11
face 1 6
tuesday's 1 7
full 1 10
grace 1 12"
In:
"Шалтай-Болтай
Сидел на стене.
Шалтай-Болтай
Свалился во сне."
Out:
"шалтай-болтай 2 1 5
сидел 1 2
на 1 3
стене 1 4
свалился 1 6
во 1 7
сне 1 8"