C# 프로그래밍 기초 실습 전자책

C# / .NET 알고리즘과 퀴즈
본 알고리즘 퀴즈 문제는 C#/.NET 개발자를 위한 알고리즘 인터뷰 혹은 C# 프로그래밍을 통한
문제 해결 알고리즘을 연구해 보는데 도움이 되고자 작성되었습니다.


퀴즈 질문


예상답변/설명

소스 문자열의 부분집합 문자열 (subset string)을 발췌하고 이를 소팅하여 Target이 되는 문자열 s2를 소트한 값과 같은지를 비교하면 전체 소스문자열 s1이 타겟 s2의 Permutation 문자열을 포함하는지 알 수 있다.

public static bool HasStringPermutation(string s1, string s2)
{
    // Ex : S1 = ABCDEFGHI
    //      S2 = ECD
    char[] a1 = s1.ToCharArray();
    char[] a2 = s2.ToCharArray();
    char[] t = new char[a2.Length];

    Array.Sort(a2);            

    for (int i = 0; i < a1.Length - a2.Length + 1; i++)
    {
        for (int j = 0; j < a2.Length; j++)
        {
            t[j] = a1[i + j];
        }

        Array.Sort(t);                

        if (t.SequenceEqual(a2))
            return true;
    }

    return false;
}