Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 n개의 연속된 문자열을 합쳐 만들 수 있는 가장 긴 문자열 찾기

문제 정의

문자열 배열을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열에서 가능한 모든 n개의 연속된 문자열 조합을 하나씩 이어 붙여 만들고, 그중 가장 긴 문자열 중 먼저 나오는 것을 반환해야 합니다.

예제 코드

다음은 위 문제를 해결하는 전체 코드입니다.

const arr = ["zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"];
const num = 2;
function longestConsec(strarr, k) {
    if (strarr.length == 0 || k > strarr.length || k <= 0) return '';
    let longStr = '';
    let newStr = '';
    for (let i = 0; i < strarr.length; i++){
        newStr = strarr.slice(i, i+k);
        if (newStr.join('').length > longStr.length ){
            longStr = newStr.join('');
        }
    }
    return longStr;
}
console.log(longestConsec(arr, num));

출력 결과

abigailtheta

코드 동작 원리

이 알고리즘은 다음과 같은 단계로 동작합니다.

1. 유효성 검사
배열이 비어 있거나, k가 배열 길이보다 크거나, k가 0 이하인 경우에는 유효한 조합을 만들 수 없으므로 빈 문자열('')을 즉시 반환합니다.

2. 슬라이딩 윈도우 방식으로 순회
for 반복문을 사용해 시작 인덱스 i를 0부터 배열 끝까지 이동시키면서, slice(i, i+k)로 현재 위치에서 시작하는 k개의 연속된 문자열을 추출합니다.

3. 길이 비교 후 갱신
추출한 문자열들을 join('')으로 하나로 합친 뒤, 지금까지 찾은 가장 긴 문자열(longStr)보다 길다면 longStr을 새로운 값으로 갱신합니다.

4. 결과 반환
모든 경우를 확인한 후 longStr을 반환하면, 길이가 같은 조합이 여러 개일 때는 먼저 등장한 조합이 자연스럽게 유지됩니다.

위 예제에서 num이 2이므로 두 개씩 연속된 문자열을 합쳐 보게 되며, 그중 가장 긴 조합인 'abigail' + 'theta' = 'abigailtheta'(길이 12)가 최종 결과로 출력됩니다.