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

JavaScript 문자열 알파벳 순 정렬: 대소문자 무시하고 공백·특수문자 제거하기


문제

알파벳과 공백이 섞여 있는 문자열 str을 입력받아 처리하는 JavaScript 함수를 작성해야 합니다.

함수는 입력 문자열을 처음부터 끝까지 순회하면서, 각 문자를 '대소문자를 구분하지 않고 등장 순서대로 알파벳 순'으로 새 문자열에 이어 붙인 결과를 반환해야 합니다. 공백과 문장부호는 단순히 제거하면 됩니다!

예를 들어 함수의 입력이 다음과 같다면 −

입력

const str = 'some simple letter combination!';

출력

const output = 'abceeeeiiillmmmnnoooprssttt';

예제 코드

다음은 위 문제를 해결하는 코드입니다 −

const str = 'some simple letter combination!';
const orderString = (str = '') => {
    let res = '';
    for(let i = 97; i < 123; ++i){
        for(let j = 0; j < str.length; j++){
            if(str[j].toLowerCase().charCodeAt() === i){
                res += str[j];
            };
        };
    };
    return res;
};
console.log(orderString(str));

출력 결과

abceeeeiiillmmmnnoooprssttt

코드 동작 원리

이 코드의 핵심 로직은 다음과 같습니다:

  • 아스키 코드 97('a')부터 122('z')까지 차례대로 외부 반복문을 돌립니다.
  • 각 알파벳마다 내부 반복문으로 입력 문자열 전체를 훑으면서, 해당 문자를 소문자로 변환한 뒤 아스키 코드가 현재 알파벳과 일치하는지 확인합니다.
  • 일치하는 문자만 결과 문자열 res에 이어 붙입니다. 덕분에 공백과 특수문자는 자동으로 걸러집니다.

별도의 sort() 호출 없이도 알파벳 순서가 자연스럽게 보장되며, 시간 복잡도는 O(26 × n)으로 문자열 길이에 선형적으로 비례해 매우 효율적입니다.