给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
public String longestPalindrome(String s) { int start = 0, end = 0; for (int i = 0; i < s.length(); i++) { int len1 = expandAroundCenter(s,i,i);//abcba int len2 = expandAroundCenter(s,i,i+1);//aabbaa int max = Math.max(len1, len2); if(max > end - start){//计算 长度为奇数或者偶数的 的开始结束索引 start = i - (max-1)/2; end = i + max/2; } } return s.substring(start,end+1);//左开右闭 } /** * 计算子串长度 * @param s * @param left * @param right * @return */ public 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; }
转载自LeetCode
标签:子串,right,end,int,max,start,回文,最长,left From: https://www.cnblogs.com/itzkd/p/16745797.html