다음과 같이 반복되는 문자가 포함된 문자열이 있습니다. -
const a = "fdsfjngjkdsfhhhhhhhhhhhfsdfsd";
우리의 임무는 연속된 동일한 문자의 최대 개수를 연속으로 반환하는 함수를 작성하는 것입니다. 위의 문자열과 같이 h라는 문자가 연속적으로 11번 나타나므로 우리 함수는 이 문자열에 대해 11을 반환해야 합니다.
이 문제는 이 슬라이딩 창 알고리즘의 좋은 후보입니다. 여기서 안정적인 창은 연속적인 문자를 포함하고 다른 요소를 포함하는 창은 불안정합니다. 창은 끝에 새 문자를 추가하고 반복되는 문자를 제거하여 안정되는 경향이 있습니다. 시작합니다.
슬라이딩 윈도우 알고리즘을 사용하는 이 함수의 코드는 -
예시
const a = "fdsfjngjkdsfhhhhhhhhhhhfsdfsd"; const findMaximumRepeating = str => { let max = 0; for(let start = 0, end = 1; end < str.length; ){ if(str[end] === str[start]){ if(max < end - start + 1){ max = end - start + 1; }; end++; } else { start = end; }; }; return max; }; console.log(findMaximumRepeating(a));
출력
콘솔의 출력은 다음과 같습니다. -
11