题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
// HJ85 最长回文子串.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include<iostream> #include<bits/stdc++.h> using namespace std; int check(string s)//回文串check函数 { int len = s.size();//定义 s长度 int count = 0;//临时记录回文串长度 for (int i = 0; i <len; i++)//遍历此字符串 { if (s[i] == s[len - i - 1])//逐位判断 count ++;//计数加一(从头遍历到尾巴) else return 0;//判断有一位不是则直接抛弃截取的此子字符串 } return count;//返回回文串的长度 } int main() { string s; while (cin >> s) { int res = 0;//定义一个结果记录最大回文子串 int len = 0;//记录临时回文子串 int le = s.size();//定义字符串的长度 for (int i = 0; i <le; i++)//遍历字符串 { for (int j = i; j <le; j++)//截取字符串 { len = check(s.substr(i, j - i + 1));//判断此字符串是否为回文串并返回其回文串长度 res = max(res, len);//反复找出最长的回文串 } } cout << res << endl;//输出 } return 0; }