題目描述:給定一個字元串s,找到s中最長的回文子串,你可以假設s的最大長度是1000.
輸入示例1;
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
輸入示例2:
Input: "cbbd"
Output: "bb"
class Solution {
public:
string longestPalindrome(string s) {
int len=s.size();
if(len==0||len==1)
return s;
int start=0;
int end=0;
int len_max=0;
for(int i=0;i<len;i++){
int len1=expand1(s,i,i);
int len2=expand1(s,i,i+1);
len_max=max(max(len1,len2),len_max);//需要判斷三個資料的大小關系
if(len_max>end-start+1){
start=i-(len_max-1)/2;
end=i+len_max/2;
}
}
return s.substr(start,len_max);
}
private:
int expand1(string s,int left,int right){
int L=left,R=right;
while(L>=0&&R<s.length()&&s[L]==s[R]){
L--;
R++;
}
return R-L-1;//注意前面的while循環最後L--和R++了,是以L指向字元串第一個元素的前一個位置,R指向了字元串最後一個元素的後一個位置
}
};