프로그래밍/Algorithm
Longest Palindromic Substring
kkwonsy
2020. 4. 21. 17:01
Palindrome?
문자열을 거꾸로 해도 원래의 문자열과 같은 문자열
public String longestPalindrome(String s) {
if (s.length() == 0) {
return "";
}
String result = "" + s.charAt(0);
for (int i = 0; i < s.length() - 1; i++) {
for (int j = s.length()-1; j > i; j--) {
String newStr = s.substring(i, j+1);
if (isPalindrome(newStr) && result.length() < newStr.length()) {
result = newStr;
if (s.equals(newStr)) {
return s;
}
}
}
}
return result;
}
private boolean isPalindrome(String s) {
for (int i = 0; i < s.length() / 2; i++) {
if (s.charAt(i) != s.charAt(s.length() - i - 1)) {
return false;
}
}
return true;
}
3중 for문이라 성능이 아쉽다.
특히 if (s.equals(newStr)) 은 땜빵...
개선이 필요하다.
(length 를 줄여가면서 str를 만들면 좋을 듯)