力扣最长回文子串java
时间: 2023-10-14 19:17:22 浏览: 52
力扣最长回文子串的问题是一个经典的字符串处理问题。下面是一个使用Java实现的解法:
```java
public class Solution {
public String longestPalindrome(String s) {
if (s == null || s.length() < 2) {
return s;
}
int start = 0, end = 0;
for (int i = 0; i < s.length(); i++) {
int len1 = expandAroundCenter(s, i, i);
int len2 = expandAroundCenter(s, i, i + 1);
int len = Math.max(len1, len2);
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
return s.substring(start, end + 1);
}
private int expandAroundCenter(String s, int left, int right) {
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
return right - left - 1;
}
}
```
这个解法使用了中心扩展法,遍历字符串中的每个字符,并以该字符为中心向两边扩展,寻找回文串的最大长度。同时,由于回文串的长度可以是奇数或偶数,所以需要分别考虑以当前字符为中心或以当前字符和下一个字符为中心的情况。
希望能够帮助到你!