题目
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入
输入在一行中给出长度不超过1000的非空字符串。
输出
在一行中输出最长对称子串的长度。
思路
最终代码
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
string s;
int left,right,i=0,MaxLen=1,len;
getline(cin,s);
while(i<s.size()-1){
if(s[i]==s[i+1]){
left=i;
right=i+1;
len=0;
}
else if(i<s.size()-2&&s[i]==s[i+2]){
left=i;
right=i+2;
len=1;
}
while(left>=0&&right<s.size()&&s[left]==s[right]){
left--;
right++;
len+=2;
}
if(len>MaxLen) MaxLen=len;
i++;
}
cout << MaxLen << endl;
return 0;
}
遇过的问题
总结
- 当有两个指针移动的时候,长度加的是2
- 最大对称子串长度初始值为1