九度oj 题目1252:回文子串
生活随笔
收集整理的這篇文章主要介紹了
九度oj 题目1252:回文子串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述: 輸入: 輸出: 樣例輸入: google 樣例輸出: 4
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <algorithm> 5 #include <iostream> 6 #include <cmath> 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 }
輸入一個字符串,輸出該字符串中對稱的子字符串的最大長度。
比如輸入字符串“google”,由于該字符串里最長的對稱子字符串是“goog”,因此輸出4。
存在多組數據,每組數據一行字符串,長度不大于100。
輸出回文子串的最大長度。
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <algorithm> 5 #include <iostream> 6 #include <cmath> 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 }
?
轉載于:https://www.cnblogs.com/jasonJie/p/5769652.html
總結
以上是生活随笔為你收集整理的九度oj 题目1252:回文子串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Junit测试 - Spring的配置
- 下一篇: Java用户程序