자료구조 & 알고리즘/== 투포인터 ==
투포인터 문제 - 가장 긴 팰린드롬 부분 문자열
꾸준함의 미더덕
2024. 7. 15. 19:07
가장 긴 팰린드롬 부분 문자열을 출력하라
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);
}
}