Вот описание того, как я решил эту проблему на LeetCode. Задача требует, чтобы вы нашли максимальное количество последовательных символов в заданной строке.
Я настроил цикл for
для повторения каждого символа, а затем определил, что при каждом проходе мне нужно отслеживать текущее максимальное количество, называемое maxCount
, и текущую промежуточную сумму, называемую currentCount
. Для каждой итерации цикла это все, что нужно учитывать.
В цикле я знал, что мне придется сравнивать текущий наблюдаемый символ с предыдущим символом. Если они совпадают, я добавляю единицу к currentCount
, в противном случае я просто сбрасываю currentCount
на единицу. В конце каждого цикла я устанавливаю maxCount
либо равным самому себе, либо currentCount
— в зависимости от того, что больше. Вне цикла я обязательно вернул maxCount
в качестве конечного результата.
С точки зрения пространственной сложности, мы не храним и не храним объекты данных, поэтому у нас есть пространственная сложность O(1). С точки зрения временной сложности, мы используем только один цикл for
, который выполняет итерацию по каждому символу в заданной строке, поэтому у нас есть временная сложность O(n), где n — длина заданной строки s.
Смотрите мое полное решение ниже:
var maxPower = function(s) { let maxCount = 0 let currentCount = 1 for(let i = 1; i <= s.length; i++){ let char = s[i] let lastChar = s[i - 1] if(char === lastChar){ currentCount += 1 } else { currentCount = 1 } maxCount = Math.max(maxCount, currentCount) } return maxCount };