题目
解题思路
- 1.暴力对每个
s[i]
求解俩边能对称的个数,然后去最大值。 - 2.注意分为奇偶俩种情况,例如12321 和 123321。
- 3.
char s[1001];cin.getline(s,1001);
用这种方式输入一行字符串。
代码
#include<iostream>
#include<string>
#include<vector>
#include<cstring>
using namespace std;
int main(int argc, char *argv[])
{
char s[1001];
cin.getline(s,1001);
int maxlen=strlen(s);
int longest = 0;
for (int i = 0; i < maxlen; ++i) {
int k1=0,k2=0;
while (i-k1>=0&&i+k1<maxlen&&s[i-k1]==s[i+k1]) {
k1++;
}
while (i-k2>=0&&i+1+k2<maxlen&&s[i-k2]==s[i+1+k2]) {
k2++;
}
k1 = 2 *( k1 - 1 ) +1;
k2 = 2 * k2;
k2 = max(k1,k2);
longest = max(longest,k2);
}
cout<<longest<<endl;
return 0;
}