5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)
从中心向两边扩散,如果是奇数,则中心值只有一个,如果是偶数,则中心值有两个。
需要写一个判断是否是回文的函数,返回回文字符串。
从头开始扩散,比较一个和两个值开始扩散的回文串,哪个长,返回哪个。
class Solution {
public:
string fun(string s,int left,int right){
string res="";
while(left>=0&&right<s.length()){
if(s[left]==s[right]){
left--;
right++;
}
else {
break;
}
}
for(int i=left+1;i<right;i++){
res+=s[i];
}
return res;
}
string longestPalindrome(string s) {
string res="";
for(int i=0;i<s.length();i++){
string s1=fun(s,i,i);
cout<<"s1"<<s1<<endl;
string s2=fun(s,i,i+1);
cout<<"s2"<<s2<<endl;
res=res.length()>s1.length()?res:s1;
res=res.length()>s2.length()?res:s2;
}
return res;
}
};