回文就是字符串的逆转显示和原来的一样,比如"abba"顺序读和逆序读并没有差别
给你一个字符串 s,找到 s 中最长的回文子串。比如
输入:s = “babad”
输出:“bab”,其中"aba" 同样是符合题意的答案。
输入:s = “cbbd”
输出:“bb”
通过问题描述发现,回文子串分为奇数回文子串和偶数回文子串,而输入字符串并不能直接确定奇偶,因此需要对奇偶都进行判断。
public String longestPalindrome(String s) {
int len = s.length();
int start = 0, end = 0, max_len = 0;
//定义字符串的长度
for (int i = 0; i < len; i++) {
//i为起点判断i的左边第一个和右边第一个是否相等
int left = i;
int right = i;
//奇数回文"aba",中心回文
while (left - 1 >= 0 && right + 1 < s.length() && s.charAt(left - 1) == s.charAt(right + 1)) {
left--;
right++;
if (right - left > max_len) {
max_len = right - left;
start = left;
end = right;
}
}
//偶数回文 "abba"
//先判断和下一个是否相等,然后中心回文
//左边的第一个以i为起点,右边的第一个以i+1为起点
left = i;
right = i + 1;
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
if (right - left > max_len) {
max_len = right - left;
start = left;
end = right;
}
left--;
right++;
}
}
return s.substring(start, end + 1);
}
>如果觉得对你有帮助的话:
> 👍 点赞,你的认可是我创作的动力!
> ⭐️ 收藏,你的青睐是我努力的方向!
> 👄 评论,你的意见是我进步的财富!