您的位置:首页 > 其它

最长回文子串(Longest Palindromic Substring)

2015-10-23 16:26 357 查看
这算是一道经典的题目了,最长回文子串问题是在一个字符串中求得满足回文子串条件的最长的那一个。常见的解题方法有三种:

(1)暴力枚举法,以每个元素为中心同时向左和向右出发,复杂度O(n^2);

(2)动态规划法,复杂度O(n^2)。设f[i][j]表示[i,j]之间最长回文子串,递推方程见链接

对于暴力枚举的方法,这里有一个简单的Java实现,要好好理解。

public String longestPalindrome(String s) {
int start = 0, end = 0;
int maxLen = 1;
for (int i = 0; i < s.length(); i++) {
int left = i;
int right = i;
while (left > -1 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
if (maxLen < right - left + 1) {
maxLen = right - left + 1;
start = left + 1;
end = right - 1;
}

left = i;
right = i + 1;
while (left > -1 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
if (maxLen < right - left + 1) {
maxLen = right - left + 1;
start = left + 1;
end = right - 1;
}

}
return s.substring(start, end + 1);
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: