对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
输入样例:
Is PAT&TAP symmetric?
输出样例:
11
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include "stdio.h"
#include "string.h"
//循环每一个字符,找到中间的,然后前后比较,记录长度
int main() {
char str[1001];
int i;
int len = 1, max = 1;
int a, b;
gets_s(str);
int slen = strlen(str);
for (i = 1;i < slen;i++) {
len = 1;
a = i-1;
b = i + 1;
while (a >= 0 && b < slen) {
if (str[a] == str[b]) {
len += 2;
a--;
b++;
}
else
break;
}
if (len > max)
max = len;
}
printf("%d", max);
return 0;
}
思路:循环每一个字符,将此字符作为中间字符判断,如果是进入循环,求其前后一致的长度,记录下来,求出最大的长度