팰린드롬은 순서를 거꾸로 읽었을 때도 원래의 문자열이나 수열과 동일한 경우
1. 투포인터 방식
public static boolean isPalindrome(String str) {
int left = 0;
int right = str.length() - 1;
while (left < right) {
// 대소문자 무시하고 비교하고 싶다면: toLowerCase() 사용
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
2. 문자열을 뒤집는 방식
public static boolean isPalindrome(String str) {
String reversed = new StringBuilder(str).reverse().toString();
return str.equals(reversed);
}
시간복잡도는 모두 O(N)으로 동일하지만
투포인터는 N/2이고, 문자열을 뒤집는 경우 2N이고 문자열 뒤집기는 새로운 문자를 만드는 추가적인 공간 N을 필요로 한다.
반응형
'자료구조 & 알고리즘 > 알고리즘' 카테고리의 다른 글
[그래프 탐색] BFS와 DFS, 위상정렬 (0) | 2025.06.15 |
---|---|
슬라이딩 윈도우 알고리즘 (0) | 2025.06.14 |
이진탐색 (1) | 2025.06.14 |
허프만 코딩 (0) | 2025.06.12 |
[정렬 알고리즘] 합병 정렬, 퀵정렬, 계수 정렬 (1) | 2025.06.12 |