Мне нужно создать программу, которая печатает самую длинную общую подстроку из двух строк.например:
String str1 = "abcdef";
String str2 = "abcgef";
самая длинная общая строка должна быть "abc"
.Я могу только использовать циклы, строки и массивы!нет методов / функций и т. д. Я новичок, и хотя я знаю функции, мне не разрешено его использовать.
Я попытался использовать переменную count, чтобы последняя буква не сравнивалась с другими символами извторая строка снова и снова, но возникает одна и та же ошибка.
String com = "";
String com2 = "";
int a;
int b;
for (i = 0; i < str1.length(); i++) {
int count1 = 0;
int count2 = 0;
for (int j = 0; j < str2.length(); j++) {
a = i;
b = j;
com2 = "";
while (str1.charAt(a) == str2.charAt(b)) {
com2 = com2 + str1.charAt(a);
if (com2.length()>com.length()) {
com = com2;
}
if (a<str1.length()-1) {
a++;
}
if (b<str2.length()-1) {
b++;
}
}
}
}
System.out.println(com);
Как я уже сказал, результат должен быть "abc"
, и все, но я получаю ошибку времени выполнения, сообщающую StringIndexOutOfBoundsException
вне диапазона 6.
спасибо!