华为机试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")


查看16道真题和解析