Проблема в том, что A=A+A;
делает A
как abcabc
после первой итерации, abcabcabcabc
после второй итерации, abcabcabcabcabcabcabcabc
после третьей итерации и т. Д., Т. Е. Вместо добавления, строка удваивается в каждой итерации.
Вы как будто получили задачу добавить 2
к себе на каждой итерации, т.е. после первой итерации оно должно стать 2 + 2 = 4
, после второй итерации оно должно стать 4 + 2 = 6
, после третьей итерации оно должно стать 6 + 2 = 8
и т. д.
Тогда как, как вы это сделали, оно станет 2 + 2 = 4
после первой итерации, 4 + 4 = 8
после второй итерации, 8 + 8 = 16
после третья итерация и т. д.
В качестве примечания следует избегать использования конкатенации строк в al oop. Также следует соблюдать Java соглашение об именах , например, имя переменной A
должно быть a
.
. Сделайте это следующим образом:
public class Main {
public static void main(String[] args) {
// Test
System.out.println(repeatedStringMatch("abc", "cabcabca"));
}
static int repeatedStringMatch(String a, String b) {
int count = 1;
StringBuilder sb = new StringBuilder(a);
while (sb.length() <= 1000) {
if (sb.indexOf(b) != -1) {
return count;
} else {
sb.append(a);
count++;
}
}
return -1;
}
}
Вывод:
4