У меня есть программа, которая может найти самую длинную повторяющуюся подстроку введенной строки, но дело в том, что когда в ответе 2 повторяющиеся подстроки наибольшей длины, я получаю только одну из них.
Например, для строки 123b456k123m456j ответ равен 123, а ожидается ответ 123 и 456..
Можно ли как-то исправить эту проблему? Если знаете как, ответьте пожалуйста на мой вопрос))
let s = prompt('Enter string');
function substr(str, begin, end) {
let result = "";
for (let i = begin; i < end; i++) {
result += str[i];
}
return result;
}
function lcp(str1, str2) {
let n = Math.min(str1.length, str2.length);
for (let i = 0; i < n; i++) {
if (str1.charAt(i) != str2.charAt(i)) {
return substr(str1, 0, i);
}
}
return substr(str1, 0, n);
}
function lrs(str) {
const suffixes = [];
for (let i = 0; i < str.length; i++) {
suffixes.push(substr(str, i, str.length));
}
suffixes.sort();
let result = '';
let res=[];
for (let i = 0; i < str.length - 1; i++) {
const p = lcp(suffixes[i], suffixes[i + 1]);
if (p.length > result.length){
result = p;
}
}
return result;
}
alert(lrs(s));