您的位置:首页 > 编程语言 > Java开发

【leetcode】【5】Longest Palindromic Substring

2016-02-27 10:08 525 查看

一、问题描述

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.

二、问题分析

该题求的是字符串中的最常回文子串。本质上还是字符串的遍历问题。既然是回文串,那么在求的过程中可以采用从中间往两边扩散的方法。需要注意的是在扩散之前我们需要选取中心点(分析会发现中心点中的字符是相同的)。时间复杂度为O(n2)。

三、Java AC代码

public String longestPalindrome(String s) {
if (s == null || s.length() <= 2) {
return s;
}
int min = 0, max = 0;
char[] str = s.toCharArray();
for (int i = 1; i < s.length(); i++) {
int start = 0, end = 0;
int tmp = i;
int tmp2 = i;
while (--tmp >= 0 && str[tmp] == str[i])
;
while (++tmp2 < s.length() && str[tmp2] == str[i])
;
start = tmp;
end = tmp2;
while (start >= 0 && end < s.length()) {
if (str[start] == str[end]) {
start--;
end++;
} else {
break;
}
}
start++;
end--;
if (end - start > max - min) {
min = start;
max = end;
}
i = tmp2 - 1;
}
return s.substring(min, max + 1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java leetcode string