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

C#으로 문자열이 회문(Palindrome)인지 확인하는 방법

회문(Palindrome)은 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 의미합니다. 예를 들어 "Level", "Madam", "Racecar" 같은 단어가 대표적인 예입니다. 이번 글에서는 C#을 사용하여 특정 문자열이 회문인지 판별하는 방법을 알아보겠습니다.

1. 문자열 준비하기

먼저 회문 여부를 확인할 문자열을 준비합니다.

str = "Level";

2. 문자열을 문자 배열로 변환

각 문자를 개별적으로 다루기 위해 ToCharArray() 메서드를 사용해 문자열을 문자 배열로 변환합니다.

char[] ch = str.ToCharArray();

3. 배열 뒤집기

Array.Reverse() 메서드를 사용하면 문자 배열의 순서를 손쉽게 반전시킬 수 있습니다.

Array.Reverse(ch);

반전된 배열은 다시 new string() 생성자를 통해 문자열로 변환할 수 있습니다.

rev = new string(ch);

4. 원본과 비교하기

마지막으로 Equals() 메서드를 사용하여 원본 문자열과 뒤집은 문자열이 동일한지 비교합니다. 이때 StringComparison.OrdinalIgnoreCase 옵션을 지정하면 대소문자 차이를 무시하고 비교할 수 있어, "Level"처럼 첫 글자만 대문자인 경우에도 정확하게 판별됩니다.

bool res = str.Equals(rev, StringComparison.OrdinalIgnoreCase);

전체 예제 코드

지금까지 설명한 내용을 모두 포함한 완성된 코드는 다음과 같습니다.

using System;
namespace Demo {
    class Program {
        static void Main(string[] args) {

            string str, rev;
            str = "Level";
            char[] ch = str.ToCharArray();
            Array.Reverse(ch);
            rev = new string(ch);
            bool res = str.Equals(rev, StringComparison.OrdinalIgnoreCase);

            if (res == true) {
                Console.WriteLine("String " + str + " is a Palindrome!");
            } else {
                Console.WriteLine("String " + str + " is not a Palindrome!");
            }
            Console.Read();
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

String Level is a Palindrome!

마무리

이처럼 C#에서는 ToCharArray(), Array.Reverse(), Equals() 세 가지만 활용하면 별도의 복잡한 로직 없이 간단히 회문 여부를 확인할 수 있습니다. 대소문자 구분이 필요한 경우에는 StringComparison 옵션을 조정하면 되므로, 상황에 맞게 유연하게 적용해 보시기 바랍니다.