天梯赛练习——最长对称子串 (25分)

题目:

在这里插入图片描述

分析:

这道题借鉴了这位大佬的题解,通过题目可知找对称字符串,对称的字符串又满足回文串的性质,也就是说该字符串倒转之后仍为他本身,可以通过一个二重循环,倒转每一个可能的字符串,看该字符串是否满足回文串的性质,如果满足,找出这些字符串中最长的即可。

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

int main()
{
    string ss;
    int ans = 1;
    getline(cin,ss);
    int len = ss.size();
    for(int i=0;i<len;++i)
    {
        string mat = "";
        for(int j=i;j<len;++j)
        {
            mat += ss[j];
            string tmp = mat;
            reverse(tmp.begin(),tmp.end());
            if(tmp == mat && ans < tmp.size())
                ans = tmp.size();
        }
    }
    printf("%d\n",ans);
    return 0;
}

发布了61 篇原创文章 · 获赞 7 · 访问量 3610

猜你喜欢

转载自blog.csdn.net/weixin_42469716/article/details/105328028