回文串

2019-12-03

回文串

来源:牛客网

题目描述

既然大家都知道回文串是怎么回事了,那我们就长话短说,现在有一个字符串,长度小于 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;
}
算法

多喝嘤料