来源:牛客网
题目描述
既然大家都知道回文串是怎么回事了,那我们就长话短说,现在有一个字符串,长度小于 1200,我想知道最长的回文子串长度是多少。
输入描述
多组输入,输入字符串只包含小写字母。
输出描述
每组输出一个数字,表示最长的回文子串。
示例 1
输入
aqppqole
ebcml
输出
4
1
题解
这题的数据量不是很大 首先我们可以把所有的子串暴力找出来看他是否是回文子串,并把回文子串的长度加入到 vector 数组里面去,最后遍历出最长的长度。 这里给出代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;
int check(string s)
{
int len = s.length();
for (int i = 0, j = len - 1; i <= j; i++, j--)
{
if (s[i] != s[j])
return false;
}
return true;
}
vector<int> v;
int main()
{
//freopen("1.in", "r", stdin);
string s;
while (cin >> s)
{
//double t1 = clock();
int len = s.length();
for (int i = 0; i < len; i++)
{
for (int j = 1; j <= len - i; j++)
if (check(s.substr(i, j)))
v.push_back(s.substr(i, j).length());
}
cout << *max_element(v.begin(), v.end()) << endl;
v.clear();
//double t2 = clock();
//cout << (t2 - t1) / 1000 << endl;
}
return 0;
}