기타등등/알고리즘 기록

[Unity C#] 아나그램(Anagram)

CodeJB 2021. 3. 30. 18:16

아나그램이란?

같은 문자로 이루어진 문자열이지만, 문자들의 정렬이 다른 경우 ( HelloWorld / WrlodHolle)

 

소스코드

public class Anagram_Source : MonoBehaviour
{
    void Start()
    {
        string inputstr = "HelloWorld";
        string inputstr2 = "WrlodHolle";

        Debug.Log(AnagramChecker(inputstr, inputstr2));

    }

    bool AnagramChecker(string input1, string input2)
    {
        //공백 제거
        input1 = input1.Replace(" ", "");
        input2 = input2.Replace(" ", "");

        //1차적으로 길이로 판단
        if(input1.Length != input2.Length)
        {
            return false;
        }

        //정렬
        string newstr = StringSort(input1);
        string newstr2 = StringSort(input2);

        //비교
        if (newstr.Equals(newstr2))
        {
            return true;
        }

        return false;
    }

    string StringSort(string input)
    {
        var chars = input.ToLower().ToCharArray(); //소문자로 바꾸고 char[]로 변환

        Array.Sort(chars);//정렬

        return new string(chars);//다시 문자열로 변환
    }
}