解题思路:

思路:仔细读题发现,起始就是找最长对称串。

暴力求出所有子串,判断是不是对称串即可,然后找最大长度。

其中用到了string的一些性质。

比如赋值,直接s1=s2即可。

或赋值某串的一部分 string s2(s1,m,n)  其中s1为待复制的整串,m为开始的位置(下标),n为长度。

还用到了reverse,字符串颠倒函数,颠倒完和原子串对比判断是否相同即可,

用法reverse(s1.begin(),s1.end());







注意事项:





参考代码:

#include<bits/stdc++.h>  

using namespace std;  

int main()  

{   

    string s1;  

    int maxn=0;  

    while(cin>>s1)  

    {  

        if(s1.size() == 1)  

        maxn = 1;  

        else  

        {  

            for(int i=0;i<s1.size()-1;i++)  

            {  

                for(int j=i+1;j<s1.size();j++)  

                {  

                    string s2(s1,i,j-i+1);  

                    string s3(s1,i,j-i+1);  

                    reverse(s2.begin(),s2.end());  

                    if(s2 == s3)  

                    {  

                        if(s2.size() > maxn)  

                        maxn = s2.size();  

                    }  

                }  

            }  

        }  

        cout<<maxn<<endl;  

        maxn = 0;  

    }  

    return 0;  

}   


点赞(1)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

5022邓亚冰 3年前 回复TA
j-i+1这个长度是怎么得出来的呀,我属实看不懂了