Given a string S, find the longest palindromic substring in S.
You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.(
思路:把字符串字符间的间隙考虑进去,即回文可能从某个字符向两侧寻找,也可能从一个间隙向两侧寻找,字符个数加上间隙个数一共需要查找 n + (n -1) 次,n为字符串长度。
每次都从中心向两侧查找(最笨的方法了吧!哈哈!)
public class Solution {
public String longestPalindrome(String s) {
int length = s.length();
int leftIndex;
int rightIndex;
String result = "";
for (int i = 0; i < 2 * length - 1; i++) {
if (i % 2 == 0) {
leftIndex = i / 2;
rightIndex = i / 2;
} else {
leftIndex = i / 2;
rightIndex = i / 2 + 1;
}
String palindrome = getPalindrome(s, leftIndex, rightIndex);
result = palindrome.length() > result.length() ? palindrome : result;
}
return result;
}
public String getPalindrome(String s, int leftIndex, int rightIndex) {
while (leftIndex >= 0 && rightIndex < s.length() && s.charAt(leftIndex) == s.charAt(rightIndex)) {
leftIndex--;
rightIndex++;
}
return s.substring(leftIndex + 1, rightIndex);
}
}