가장 긴 팰린드롬 부분 문자열을 출력하라
input: dcbabcdd
output: dcbabcd
/**
* 팰린드롬은 짝수 / 홀수 케이스 구분하는 것 주의
*/
class Solution {
public String longestPalindrome(String s){
if(s.length() == 1){
return s;
}
String result = s.substring(0, 1); //제일 작은 팰린드롬은 글자 하나 (한글자도 팰린드롬이라고 보는 경우)
for (int i = 0; i < s.length(); i++) {
/**
* 팰린드롬은 짝수 / 홀수 케이스 구분하는 것 주의
*/
String evenStr = getMaxPalindrome(s, i, i + 1); //짝수
String oddStr = getMaxPalindrome(s, i, i + 2); //홀수
String longerStr = evenStr.length() > oddStr.length() ? evenStr : oddStr;
result = result.length() > longerStr.length() ? result : longerStr;
}
return result;
}
private String getMaxPalindrome(String s, int left, int right) {
if(left < 0 || right >= s.length()){
return "";
}
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
return s.substring(left + 1, right);
}
}
'자료구조 & 알고리즘 > == 투포인터 ==' 카테고리의 다른 글
투포인터 문제 - 합이 0이 되는 숫자들 고르기 (투포인터로 중복 방지) (0) | 2024.06.27 |
---|---|
투포인터 문제 - 문자열 순서 바꾸기 (0) | 2024.06.25 |