기타등등/알고리즘 기록

[Unity C#] 중복 문자열 체크 (아스키코드, 유니코드)

CodeJB 2021. 3. 30. 20:54

문제

중복된 문자열이 있는지 체크하라

소스코드

public class StringUnique_Source : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(isUnique_ASCII("Hello"));
        Debug.Log(isUnique_UNICODE("Hello"));
    }

    public bool isUnique_ASCII(string str)
    {
        if (str.Length > 128) return false;
        bool[] char_set = new bool[128];

        for (int i = 0; i < str.Length; i++)
        {
            int val = str[i]; // 1. int형으로 캐스팅해서 아스키 뽑기
            if (char_set[val]) //3. 만약 72(H)가 또 있다면 true가 리턴되어
            {
                return false;//4. False 종료 
            }

            char_set[val] = true; // 2. 72(H)번 인덱스가 true가 된다 
        }
        return true;
    }

    public bool isUnique_UNICODE(string str)
    {
        Dictionary<int,bool> dictionary = new Dictionary<int, bool>(;
        for (int i = 0; i < str.Length; i++)
        {
            int val = str[i];//1. int형으로 캐스팅해서 아스키 뽑기(키값으로 사용하기 좋음)
            if (dictionary.ContainsKey(val)) //3. 해당 키 값이 이미 있다면
            {
                return false; //4. false 종료
            }
            dictionary.Add(val,true);//2. 키값 추가와 true
        }
        return true;
    }

}

'기타등등 > 알고리즘 기록' 카테고리의 다른 글

[C++] 나이차이  (0) 2021.06.16
[Unity C#] 문자열 뒤집기  (0) 2021.03.30
[Unity C#] 아나그램(Anagram)  (0) 2021.03.30
[Unity C#] 랜덤퀴즈  (0) 2021.03.30
[Unity C#] 피보나치 수열(재귀,메모이제이션)  (0) 2021.03.30