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

C#에서 문자열의 중복 문자 제거하기 – HashSet 활용 방법

문자열을 처리하다 보면 중복된 문자를 제거해야 하는 경우가 자주 발생합니다. C#에서는 HashSet을 활용하면 아주 간단하게 해결할 수 있습니다.

HashSet을 이용한 중복 제거 원리

HashSet은 중복 값을 허용하지 않는 컬렉션입니다. 따라서 문자열을 HashSet<char> 타입으로 변환하면 동일한 문자는 하나만 저장되고, 나머지 중복 문자는 자동으로 걸러집니다.

먼저 다음과 같은 문자열이 있다고 가정해 보겠습니다.

string str = "ppqqrr";

이제 HashSet을 사용하여 문자열을 char 타입으로 매핑합니다. 이 과정에서 중복된 문자들이 자동으로 제거됩니다.

var res = new HashSet<char>(str);

그럼 전체 예제 코드를 살펴보겠습니다.

전체 예제 코드

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

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

실행 결과

Initial String: ppqqrr
New String after removing duplicates: pqr

코드 설명

new HashSet<char>(str)은 문자열의 각 문자를 순서대로 순회하면서 HashSet에 추가합니다. HashSet은 이미 존재하는 값은 다시 저장하지 않기 때문에, 최종적으로 'p', 'q', 'r' 세 개의 고유한 문자만 남게 됩니다.

마지막으로 foreach 루프를 사용하여 HashSet에 남아 있는 문자들을 하나씩 출력하면, 중복이 제거된 새로운 문자열을 손쉽게 얻을 수 있습니다. 이 방법은 별도의 반복문 비교 로직 없이 한 줄로 중복 제거가 가능하다는 장점이 있습니다.