题目:给定一个字符串,求它的最长回文子串
/*求最长回文子串,以当前字符为中心,向两边同时拓展*/ string longestPalindrome(string s) { int len = s.length(); if(len < 2) return s; int leftMost = 0, rightMost = 0; int i = 0; int start, end; while(i < len) { start = i; i++; while(i < len && s[i] == s[start]) //中间重复的字符满足回文条件 { i++; } end = i-1; while(start-1 >= 0 && end+1 < len && s[start-1] == s[end+1]) //两边同时拓展判断是否相等 { start--; end++; } if(end - start > rightMost - leftMost) //保存最长的字符区间 { leftMost = start; rightMost = end; } } return s.substr(leftMost, rightMost-leftMost+1); // 返回最长回文子串 }