题解 | #密码截取#
密码截取
http://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
中心扩展法求解
#include <bits/stdc++.h>
using namespace std;
int maxL(string s,int l,int r){//中心扩散法
int n=s.length();
while(l>=0 && r<n){
if(s[l]==s[r]){
l--;
r++;
}else break;
}
return r-l-1;//此时扩展后s[l]与s[r]已经不相等,故长度为r-l减去1
}
int main(){
string s;
cin>>s;
int i=0,n=s.length(),ans=0;
for(i=1;i<n;i++){
ans=max(ans,maxL(s,i,i));//处理n为奇数对称的情况
ans=max(ans,maxL(s,i,i-1));//处理n为偶数对称的情况
}
cout<<ans;
return 0;
}