char* longestPalindrome(char* s) { int i; int index, Max = 1, Start = 0, End = 0; // char* str = s; if (s == NULL) { return NULL; } /*虽然长度为奇数和偶数,但是可以通过确定最长回文字符串的首位和末位从而可以将回文字符串提取出来*/ for(i = 0; s[i]; i++) { index = findOdd(s, i); if(Max < (2 * (index - i) + 1)) { Max = 2 * (index - i) + 1; Start = 2 * i - index; End = index; } index = findEven(s, i); if(Max < (2 * (index - i))) { Max = 2 * (index - i); Start = 2 * i - index + 1; End = index; } } s[End + 1] = 0; return s + Start; }
string longestPalindrome(string s) { int Max=1,Maxf=0,Maxe=0; for(int i=0; i<s.size(); i++) { int end = findOdd(s,i); if(Max < (end-i)*2+1) { Max = (end-i)*2+1; Maxf=i+i-end; Maxe=end; } end = findEven(s,i); if(Max <(end-i)*2) { Max = (end-i)*2; Maxf=i+i+1-end; Maxe=end; } } return s.substr(Maxf,Max); }