Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 문자열에서 중복 문자를 제거하는 프로그램

C#에서 HashSet으로 문자열의 중복 문자 제거하기

C#에서는 HashSet을 활용하면 문자열에 포함된 중복 문자를 아주 간단하게 제거할 수 있습니다. HashSet은 중복 요소를 허용하지 않는 컬렉션이기 때문에, 문자열의 각 문자를 HashSet에 담기만 하면 자동으로 고유한 문자만 남게 됩니다.

먼저 예제에 사용할 문자열은 다음과 같습니다.

string myStr = "kkllmmnnoo";

이제 이 문자열을 char 타입의 HashSet으로 매핑합니다. 이 과정에서 중복된 문자들은 자동으로 걸러지며, 각 문자는 한 번씩만 저장됩니다.

var unique = new HashSet<char>(myStr);

HashSet의 생성자에 문자열을 그대로 전달하면 내부적으로 문자열이 char 시퀀스로 처리되므로, 별도의 반복문 없이도 중복 제거가 완료됩니다.

전체 예제 코드는 다음과 같습니다.

예제

using System;
using System.Linq;
using System.Collections.Generic;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            string myStr = "kkllmmnnoo";
            Console.WriteLine("Initial String: "+myStr);
            var unique = new HashSet<char>(myStr);
            Console.Write("New String after removing duplicates: ");
            foreach (char c in unique)
            Console.Write(c);
        }
    }
}

실행 결과

Initial String: kkllmmnnoo
New String after removing duplicates: klmno

실행 결과를 보면 원본 문자열 "kkllmmnnoo"에서 중복이 모두 제거되어 "klmno"라는 새로운 문자열이 출력된 것을 확인할 수 있습니다. 참고로 HashSet은 공식적으로 요소의 순서를 보장하지 않지만, 위 예제처럼 실제 출력에서는 대개 문자가 처음 등장한 순서대로 유지되는 것을 볼 수 있습니다. 만약 순서 보장이 중요한 로직이라면 LINQ의 Distinct() 메서드를 함께 고려해 보는 것도 좋은 방법입니다.