1 class Solution { 2 public: 3 string longestPalindrome(string s) { 4 int min_len=0,max_len=1; 5 int i,j,k; 6 if(s.enpty)return ""; 7 if(s.size()==1)return s; 8 for( i=0;i<s.size()) 9 { 10 if(max_len-i<=max_len/2)break; 11 j=i; 12 k=i; 13 if((s[k]==s[k+1])&&k<s.size()-1)k=k+1; 14 i=k+1; 15 while((s[j-1]==s[k+1])&&(j>0)&&(k<s.size()-1)){k++;j--;} 16 int new_len=k-j+1; 17 if(new_len>max_len){max_len=new_len;min_len=j;} 18 return s.substr(min_len,max_len); //str.substr(startpos, length);其中 startpos 是起始字符的序号,length 是从 startpos 开始取的字符串长度(包括startpos )
19 } 20 21 };
时间复杂度为o(n^2),仅仅避免了讨论奇数与偶数情况。