题解 | #密码截取#
密码截取
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; }