题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <math.h>
#include <stdio.h>
#include <string.h>
int main() {
char m[2500] = {0};
fgets(m, 2502, stdin);
int len = strlen(m);
int l[2500] = {0};
for (int i = 0; i < len; i++) {
for (int j = 0; j <= (len) / 2; j++) {
if (m[i - j] == m[i + 2 + j]) {
l[i] = (2 * (j)) + 3;
continue;
} else {
break;
}
}
}
for (int i = 0; i < len; i++) {
int e = 0;
for (int j = 0; j <= (len) / 2; j++) {
if (m[i - j] == m[i + 1 + j]) {
e = 2 * (j) + 2;//用来判定中间是一个的情况连的多还是两个的情况连的多
l[i] = fmax(e, l[i]);
continue;
} else {
break;
}
}
}
int max = 0;
for (int i = 0; i < len; i++) {
// printf("%d\n", l[i]);
max = (max > l[i]) ? max : l[i];
}
printf("%d", max);
return 0;
}