华为机试HJ85 题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
#include <iostream> #include <string> #include <algorithm> using namespace std; // 判断一个字符串是否为回文字符串,直接看翻转后的字符串是否和原字符串相等即可 bool IsHuiWenString(string str) { string strSrc = str; std::reverse(str.begin(), str.end()); return strSrc == str; } // 获取字符串str中所有子串中最长回文子串的长度 int GetLongestStr(string str) { int maxLen = 0; for (int i = 0; i < str.size(); i++) { for (int j = i + 1; j < str.size(); j++) { string subStr = str.substr(i, j - i + 1); if (IsHuiWenString(subStr)) { maxLen = subStr.size() > maxLen ? subStr.size() : maxLen; } } } return maxLen; } int main() { string str; while (cin >> str) { // 注意 while 处理多个 case cout << GetLongestStr(str) << endl; } } // 64 位输出请用 printf("%lld")