Валидатор ругается: "Размер списка возвращаемого методом detectAllWords отличается от правильного!" Я подозреваю, что это связано с обработкой симметричных слов. Например, слово "казак". Если оно один раз написано в массиве, то это должно считаться одинарным вхождением или двойным вхождением в массив одного и того же слова? Мой алгоритм считает, что два вхождения: одно вхождение - когда слева на право читаем слово, а второе вхождение - когда с право налево читем. Но, по сути это одно и тоже слово. Все остальные варианты слов (включая однобуквенные) обрабатываются правильно.