회문(Palindrome)이란 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 의미합니다. 예를 들어 "Malayalam", "level", "racecar" 같은 단어들이 대표적인 회문입니다.
회문 판별의 기본 원리
C#에서 문자열이 회문인지 확인하려면 다음 두 단계를 거칩니다.
1단계: Array.Reverse() 메서드를 사용해 원본 문자열을 뒤집습니다.
Array.Reverse()
2단계: Equals() 메서드로 원본 문자열과 뒤집은 문자열을 비교합니다. 비교 결과가 true라면 해당 문자열은 회문입니다.
전체 예제 코드
아래는 완성된 예제입니다. 여기서 사용한 문자열은 "Malayalam"으로, 뒤집어도 동일한 결과가 나오는 회문입니다.
using System;
namespace palindromecheck {
class Program {
static void Main(string[] args) {
string string1, rev;
string1 = "Malayalam";
char[] ch = string1.ToCharArray();
Array.Reverse(ch);
rev = new string(ch);
bool b = string1.Equals(rev, StringComparison.OrdinalIgnoreCase);
if (b == true) {
Console.WriteLine("" + string1 + " is a Palindrome!");
} else {
Console.WriteLine(" " + string1 + " is not a Palindrome!");
}
Console.Read();
}
}
}코드 설명
ToCharArray() 메서드로 문자열을 문자 배열(char[])로 변환한 뒤, Array.Reverse()로 배열의 순서를 반전시킵니다. 이후 반전된 배열을 다시 문자열로 만들어 원본과 비교합니다.
비교 시 StringComparison.OrdinalIgnoreCase 옵션을 사용하면 대소문자를 구분하지 않고 비교할 수 있어, "Malayalam"처럼 대소문자가 섞인 문자열도 정확하게 판별할 수 있습니다.
실행 결과
Malayalam is a Palindrome!
실행 결과 "Malayalam"이 회문임을 확인할 수 있습니다. 만약 회문이 아닌 문자열(예: "hello")을 입력했다면 "is not a Palindrome!"이라는 메시지가 출력됩니다.