1、题目描述
2、问题分析
计算每个字符所组成的字符串的回文子串。
3、代码
1 string longestPalindrome(string s) { 2 3 int maxL = 0; 4 int index = 0; 5 bool is_odd = false ; 6 string res ; 7 if( s.size() == 0){ 8 return res; 9 } 10 11 for( int i = 0; i < s.size() ; i++){ 12 int n_odd = countLenOfPra(s ,i, i); 13 int n_even = countLenOfPra(s, i ,i+1); 14 15 if(n_odd > maxL ){ 16 maxL = n_odd; 17 index = i; 18 is_odd = true; 19 } 20 if(n_even > maxL){ 21 maxL = n_even; 22 index = i; 23 is_odd = false; 24 } 25 } 26 27 if( is_odd ){ 28 res = subPralid(s, index , index); 29 }else{ 30 res = subPralid(s, index , index+1); 31 } 32 return res; 33 } 34 35 36 37 int countLenOfPra(string s ,int l ,int r){ 38 39 while( l >=0 && r < s.size() && s[l] == s[r]){ 40 l--; 41 r++; 42 } 43 int len = r-l+1; 44 45 return len; 46 } 47 48 string subPralid(string s ,int l , int r){ 49 string rs ; 50 while(l >= 0 && r < s.size() && s[l] == s[r]){ 51 l--; 52 r++; 53 } 54 l += 1; 55 r -= 1; 56 rs = s.substr(l,r-l+1); 57 return rs; 58 }