반복되지 않는 첫 문자 찾기

A quick summary of 반복되지 않는 첫 문자 찾기

반복되지 않는 첫 문자 찾기

주어진 문자열에서 반복되지 않는 첫 문자를 찾자.

문제 해설

방법 : 문자열을 문자 배열로 형변환 한다음, 각 문자의 출현 횟수를 해시 테이블에 저장. 문자열의 각 문자가 나열된 순서대로, 해시 테이블에 저장된 숫자를 찾음. 2보다 작은 값을 가진 첫 키-값 쌍이 출현할때, 해당 키가 반복되지 않는 첫 문자다.

C# 코드 완성

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


public class FindFirstNonRepeatedCharacter
{
    public static void Run()
    {
        const string str = "Straight Outta Compton";

        Console.WriteLine(GetFirstNonRepeatedCharacter(str));
    }

    private static char GetFirstNonRepeatedCharacter(string str)
    {
        var table = new Dictionary<char, int>();

        var charArray = str.ToCharArray();

        foreach (var character in charArray)
        {
            if (!table.ContainsKey(character))
            {
                table.Add(character, 1);
            }
            else
            {
                table[character] += 1;
            }
        }

        return charArray.FirstOrDefault(character => table[character] < 2);
    }
}

개선 사항

문자의 정확한 출현 개수에는 관심이 없으므로, 해시 테이블에 저장할 값을 [2보다 작은 값, 2보다 큰 값]의 두가지 상태만 가지는 별도의 타입을 만들면 성능이 향상될 수 있다.