L2-008 最长对称子串
分数 25
全屏浏览
切换布局
作者 陈越
单位 浙江大学
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
输入样例:
Is PAT&TAP symmetric?
输出样例:
11
代码长度限制
16 KB
时间限制
200 ms
内存限制
64 MB
代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main() {
string s;
getline(cin,s);
int ans = 1;
int len = s.length();
for (int i = 0; i < (len/2)+1; i++) {
for (int j = len-1; j >= (len/2)-1; j--) {
if (s[i] == s[j]) {
int t1 = i;
int t2 = j;
bool flag = true;
while (t1 < t2) {
t1++;
t2--;
if (s[t1] != s[t2]) {
flag = false;
break;
}
}
if (flag == true) {
ans = max(ans,j-i+1);
}
}
}
}
cout << ans << endl;
return 0;
}