Постановка задачи:
Вы пишете любовное письмо своему другу. Однако прежде чем ваш друг сможет его прочитать, кто-то другой прочитает его и повернет символы каждого слова в нужное положение K раз. Найдите количество слов, которые остаются неизменными даже после такого смещения букв.
Примечание: между словами может быть более одного пробела.
Входные характеристики:
Входные данные 1: строка слов
Вводные данные 2: количество поворотов K раз
Выходные характеристики:
Ваша функция должна возвращать количество правильных слов.
Пример 1:
Ввод 1: llohe ereth
Ввод 2: 2
Выход: 0
Пояснение: В примере 1 «llohe ereth» — это повернутая строка с коэффициентом K 2. Следовательно, после перемещения последних двух букв справа налево мы получаем исходную строку «Hello there».
Пример 2:
Ввод 1: adaada
Ввод 2: 3
Вывод: 1
Объяснение: В примере 2 «адаада» при трехкратном повороте возвращает «адаада». Следовательно, ответ равен 1.
Я написал ниже решение, которое прошло два вышеуказанных базовых случая, но не помогло для скрытых тестовых примеров (также включает тестовый пример временной сложности). Пройден только один угловой тестовый пример, потому что я проверял, чтобы строка input1 не была пустой. Решение следующее:
Код: Выделить всё
public int rotatedWords(String input1, int input2) {
int count = 0;
String arr[] = input1.split(" ");
if (input1 != null && !input1.isEmpty()) {
for (int i = 0; i < arr.length; i++) {
String s1 = arr[i] + arr[i];
int start = arr[i].length() - input2;
System.out.println("arr[i] : " + arr[i]);
String s2 = s1.substring(start, start + arr[i].length());
System.out.println("s2 : " + s2);
if (s2.equalsIgnoreCase(arr[i])) {
count++;
}
}
}
return count;
}
Мобильная версия