В любом решении для моей задачи используется метод
for(let i = 0; i < s.length; i++) {}
Почему именно он и с таким условиями и выражениями ? Я понимаю что это цикл но почему именно i = 0, i < s.length, i++
И важно упомянуть что это не единичный случай, почти в любом решении он используется и я не понимаю почему и как он связан с задачей. Например: Если коротко то суть задачи найти самую длинную подстроку палиндрома
Решение:
const input1 = "babad"; // Output: 'bab' | "aba";
const input2 = "cbbd"; // Outupt: 'bb'
const input3 = "mississippississiississi"; // Outupt: 'ississi'
const input4 = "ac"; // Outupt: 'a' | 'c'
const longestPalindrome = function(s) {
let start = 0;
let end = 0;
for(let i = 0; i < s.length; i++) {
let len1 = extendFromCenter(s, i, i);
let len2 = extendFromCenter(s, i, i + 1);
let len = Math.max(len1, len2);
if(len > end - start) {
start = Math.ceil(i - (len - 1) / 2);
end = Math.floor(i + len / 2);
}
}
function extendFromCenter(s, L, R) {
while(L >= 0 && R < s.length && s[L] === s[R]) {
L--;
R++;
}
return R - L - 1;
}
return s.substring(start, end + 1);
}
console.log(longestPalindrome(input1));
console.log(longestPalindrome(input2));
console.log(longestPalindrome(input3));
console.log(longestPalindrome(input4));