@DAS3816

Почему во всех решениях используют метод for?

В любом решении для моей задачи используется метод 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));
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Наверное, не до конца разобрались с циклом for () ?

Хотят попробовать каждую букву слова как центр палиндрома.
От 0 потому, что первая буква имеет индекс 0.
До (не не достигая) s.length – т.к. у последней буквы строки индекс s.length - 1
i++ или i = i + 1 — по одной позиции направо продвигаемся.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы