boolisPalindrome(string& s, int left, int right) { while (left < right) { if (s[left++] != s[right--]) returnfalse; } returntrue; } string StringTopic::longestPalindrome(string s) { int n = s.length(); //长度不够的时候,默认是回文串 if (n < 2) return s; //求解最长回文子串 //滑动窗口 int left = 0, maxLen = 1, right = 1; string res(1, s[0]); for (; left < n - 1; ++left) { right = left + 1; //穷举所有的可能性 while (right < n) { if (isPalindrome(s, left, right)) { int temp = maxLen; maxLen = max(maxLen, right - left + 1); if (temp != maxLen) res = s.substr(left, right - left + 1); } ++right; } } return res; }