011 문자열 회문 검사
간단히 짚고 넘어가자면 회문(palindrome)이란 거꾸로 뒤집어도 똑같은 문자열 또는 수다. 즉, 회문은 양방향으로 처리할(읽을) 수 있고 그 결과가 같다(예를 들어 madam은 회문이고 madame은 회문이 아니다).
간단히 구현하려면 중간에서 만나는 방식(meet-in-the-middle)으로 주어진 문자열들의 글자를 비교하면 된다. 기본적으로 이 해법은 문자열 중간에 도달할 때까지 첫 번째 문자와 마지막 문자, 두 번째 문자와 끝에서 두 번째 문자 등을 비교한다. 구현에는 while 문을 사용한다.
public static boolean isPalindrome(String str) {
int left = 0;
int right = str.length() - 1;
while (right > left) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
위 해법을 더욱 간결하게 작성하려면 다음과 같이 while 문 대신 for 문을 사용한다.
public static boolean isPalindrome(String str) {
int n = str.length();
for (int i = 0; i < n / 2; i++) {
if (str.charAt(i) != str.charAt(n - i - 1)) {
return false;
}
}
return true;
}