Я в конечном итоге пытаюсь решить эту проблему на кодовых войнах.
Я знаю, как узнать, сколько раз символ появляется в строке, но не сколько раз он появляется в порядке .
То есть, учитывая строку bbbaaabaaaa
, мы видим, что самый длинный повторяющийся символ - a
длины 4
.
Я попробовал простой цикл for, сравнивая символы с предыдущими символами, чтобы увидеть, идентичны ли они:
function longestRepetition (str) {
let longestChunk = '';
for (let i = 0; i < str.length; i++) {
let chunk = '';
if (i === 0) {
if (str[i] === str[i + 1]) {
chunk += str[i];
}
}
if (i > 0) {
if (str[i] === str[i - 1]) {
chunk += str[i];
console.log('chunk**', chunk);
}
if (chunk.length > longestChunk.length) {
longest = chunk;
}
}
}
return longestChunk;
}
console.log(longestRepetition('bbbaaabaaaa'));
Что больше всего беспокоит, так это то, что chunk
не увеличивается в размерах, когда я console.log
это.
Разве мы не должны видеть:
'chunk**' b
'chunk**' bb
'chunk**' bbb
?
Вместо этого мы видим, как одиночные символы получаютжурнал. Затем моя логика - сравнить chunk
с longestChunk
и вернуть longestChunk
за пределами цикла for.
Любые идеи относительно того, почему это не работает, или какие другие стратегииЯ должен попытаться вернуть самый длинный повторяющийся символ из строки?
Я понимаю, что мне придется форматировать то, что я возвращаю, как массив с символом, который повторяется больше всего, и длиной его самого длинного повторения или chunk
.