string longestPalindrome(string s) {
int len=s.length();
if(len==0)
return "";
int maxLen=1;
int start=0;
int left=0;
int right=0;
for(int i=0;i<len&&len-i>maxLen/2;){
left=i;
right=i;
while(right<len-1&&s[right]==s[right+1])
right++;
i=right+1;
while(right<len-1&&left>0&&s[left-1]==s[right+1]){
right++;
left--;
}
if(maxLen<right-left+1){
maxLen=right-left+1;
start=left;
}
}
return s.substr(start,maxLen);
}
int main() {
string s("yyccyycc");
cout<<longestPalindrome(s)<<endl;
return 0;
}
for(int i=0;i<len&&len-i>maxLen/2;)这个for中的len-i>maxLen/2条件的作用,要求举例说明该条件的作用。谢谢!
maxLen是当前找到的最长的回文字符串长度,len-i<=maxLen/2时,剩下的回文字符串长度不可能再比maxLen长了,所以跳过了
不就是一个条件嘛?
len-i 的值要大于maxLen/2
len-i > maxLen/2