pat 团体赛练习题集 L2-008. 最长对称子串

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定"Is PAT&TAP symmetric?",最长对称子串为"s PAT&TAP s",于是你应该输出11。

输入格式:

输入在一行中给出长度不超过1000的非空字符串。

输出格式:

在一行中输出最长对称子串的长度。

输入样例:

Is PAT&TAP symmetric?

输出样例:

11

虽然是水题,但还是错了几遍。贴上来警示下自己。

错误原因:没考虑到对称串是偶数的情况。

//Asimple
#include <bits/stdc++.h>
#define INF 0xfffffff
#define mod 10007
#define swap(a,b,t) t = a, a = b, b = t
#define CLS(a, v) memset(a, v, sizeof(a))
#define debug(a) cout << #a << " = " << a <<endl
using namespace std;
inline int abs(int x) { return x<?-x:x; }
typedef long long ll;
const int maxn = ;
char str[maxn]; void solve() {
int len = strlen(str);
int ans = , cnt;
for(int i=; i<len; i++) {
int in = , cnt = ;
while( i-in>= && i+in<len && str[i-in]==str[i+in] ) {
in ++;
cnt += ;
}
ans = max(ans, cnt);
in = , cnt = ;
while( i-in>= && i+in-<len && str[i-in]==str[i+in-] ) {
in ++;
cnt += ;
}
ans = max(ans, cnt);
}
cout << ans << endl;
} void input() {
gets(str);
solve();
} int main() {
input();
return ;
}
上一篇:Automatic Code Generation-->Implement Interface


下一篇:jmeter常用组件1