class Solution {
public:
string str="";
int maxlen=0;//全局变量
string longestPalindrome(string s) {
if(s.length()<=1 )return s;
for(int i=0;i<s.length()-1;i++){
find(s,i,i);
find(s,i,i+1);//奇偶回文
}
return str;
}
void find(string s,int low,int high){
while(low>=0 && high<s.length()){
if(s[low]==s[high]){
if((high-low+1)>maxlen){
maxlen=high-low+1;
str=s.substr(low,high-low+1);
}//若左右两边相同,则替换原存于str中的字符;同时更新maxlen;
low--;
high++;//索引往左右两边移动;
}
else{break;}
}
}
};
思路:考虑到回文的特殊,可以从中间出发,往两边遍历,遇到左右相等的就更新str和maxlen(用来判断是否是最长的字符串的依据)。