题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
#include <stdio.h> #include <string.h> // 1. 得到回文字符串 // 2. 依次遍历每一个字符 // 2.1 以该字符为中心的最大回文子串 aba型 // 2.2 abba型 // 3. 输出大小 int main() { char input[360] = {0}; gets(input); int len = strlen(input); int maxlen = 1; int left = 0; int right = 0; int cnt = 0; for(int i = 0; i < len; ++ i) { //aba型 cnt = 1; for(left = i - 1, right = i + 1; left >= 0 && right < len; -- left, ++ right) { if(input[left] == input[right]) { cnt += 2; } else { break; } } maxlen = maxlen > cnt ? maxlen : cnt; //abba cnt = 0; for(left = i, right = i + 1; left >= 0 && right < len; -- left, ++ right) { if(input[left] == input[right]) { cnt += 2; } else { break; } } maxlen = maxlen > cnt ? maxlen : cnt; } printf("%d", maxlen); return 0; }