Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
Subscribe to see which companies asked this question.
在一个字符串中找到最长的对称子串
public class Solution {
public String longestPalindrome(String s) {
int len = s.length();
if(len<=1){
return s;
}
int max = 0;
int j = 0;
String ans = "";
for(int i=0;i<len;i++){
for(int m=i-1,n=i+1;;m--,n++){
if(m>=0&&n<len){
if(s.charAt(m)==s.charAt(n)){
continue;
}
}
if(2*(i - m) - 1>max){
j = m+1;
max = 2*(i - m) - 1;
}
break;
}
for(int k=i,l=i+1;;k--,l++){
if(k>=0&&l<len){
if(s.charAt(k)==s.charAt(l)){
continue;
}
}
if(2*(i-k)>max){
j = k+1;
max = 2*(i-k);
}
break;
}
}
return s.substring(j,j+max);
}
}思路分为两步1.以当前点为对称中心向两边扩展 2.以当前点为两个最内部对称点的左侧点(看了时间更短的代码,其实没必要分开,浪费了一些时间)
本文介绍了一种高效算法,用于在给定字符串中找出最长的对称子串。通过两种方式扩展对称中心,确保了算法的有效性和准确性。
596

被折叠的 条评论
为什么被折叠?



