// 判断是否是回文串,枚举法bool isPalindrome(string s) { int n = s.size(); // 只枚举一半就ok. for (int i = 0; i < n / 2; i++) { if (str[i] != str[n - i - 1]) { return false; } } return true;} // 最长回文子串,中心扩展法string longestPalindrome(string s) { int len = s.size(); int pos = 0; if (len < 2) { return s; } string ans; int maxLen = 1; for (int i = 0; i < len; i++) { int left = i; int right = i; // 以s[i]为中心,向两边扩展 while (left >= 0 && right < len && s[left] == s[right]) { left--; right++; } if (right - left - 1 > maxLen) { maxLen = right - left - 1; pos = left + 1; } // 以s[i]、s[i + 1]为中心,向两边扩展 left = i; right = i + 1; while (left >= 0 && right < len && s[left] == s[right]) { left--; right++; } if (right - left - 1 > maxLen) { maxLen = right - left - 1; pos = left + 1; } } return s.substr(pos, maxLen);}