感觉不如简单题里的最大回文子串
#include <stdio.h> #include <string.h> int lenren(char str[], int mid, int len) { int count1 = 1, count2 = 0; int left1 = mid - 1, right1 = mid + 1; while (left1 >= 0 && right1 < len) { if (str[left1] == str[right1]) { count1 += 2; left1--; right1++; } else break; } int left2 = mid, right2 = mid + 1; while (left2 >= 0 && right2 < len) { if (str[left2] == str[right2]) { count2 += 2; left2--; right2++; } else break; } return count1 > count2 ? count1 : count2; } int main() { char str[2500] = {0}; while (~scanf("%s", str)) { int len = strlen(str); int max = 0, i = 0; int tem = 0; for (i = 0; i < len - 1; i++) { tem = lenren(str, i, len); max = max > tem ? max : tem; } printf("%d", max); } }