- 题目描述:
-
输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
- 输入:
-
存在多组数据,每组数据一行字符串,长度不大于100。
- 输出:
-
输出回文子串的最大长度。
- 样例输入:
-
google
- 样例输出:
-
4
1 #include
2 #include 3 #include 4 #include 5 #include 6 #include 7 char temp[102]; 8 int cnt[102]; 9 10 int findHJ(int n, int len) {11 int i = n-1, j = n+1;12 int ans = 1;13 while(i >= 0 && j < len) {14 if(temp[i] != temp[j]) {15 return ans;16 }17 i--;18 j++;19 ans = ans + 2;20 }21 return ans;22 }23 24 int findHO(int n, int len) {25 if(n + 1 > len-1) {26 return 1;27 }28 if(temp[n] != temp[n+1]) {29 return 1;30 }31 int i = n-1, j = n+2;32 int ans = 2;33 while(i >= 0 && j < len) {34 if(temp[i] != temp[j]) {35 return ans;36 }37 i--;38 j++;39 ans = ans + 2;40 }41 return ans;42 }43 44 int main(int argc, char const *argv[])45 {46 while(scanf("%s",temp) != EOF){47 int len = strlen(temp);48 int max = 0;49 for(int i = 0; i < len; i++) {50 int temp = findHJ(i, len);51 if(max < temp) {52 max = temp;53 }54 temp = findHO(i, len);55 if(max < temp) {56 max = temp;57 }58 }59 printf("%d\n",max);60 }61 62 return 0;63 }