给你一个字符串 s
,找到 s
中最长的 回文 子串。
//判断是否是回文子串
bool isvalid(string str,int left,int right){
//左指针小于右指针
while(left<right){
//如果左右指针所指的字符不同,返回false
if(str[left]!=str[right]){
return false;
}
//左指针向右,右指针向左
left++;
right--;
}
return true;
}
class Solution {
public:
string longestPalindrome(string s) {
//n为字符串长度
int n=s.size();
//最长子串长度
int maxlenth=0;
//子串开始位置
int begin=0;
//如果s为空 直接返回空字符串
if(n==0){
return "";
}
//遍历字符串s
for(int i=0;i<n;i++){
//子串从i开始
for(int j=i;j<n;j++){
//如果当前是回文子串且长度大于最长子串长度
if(j-i+1>maxlenth &&isvalid(s,i,j)){
//更新最长子串长度
maxlenth=j-i+1;
//标记开始位置
begin=i;
}
}
}
//返回最长子串
return s.substr(begin,maxlenth);
}
};