您的位置:首页 > 教育 > 培训 > 郑州博大泌尿外科医院_重庆娱乐场所最新通知_郑州seo管理_网站页面优化内容包括哪些

郑州博大泌尿外科医院_重庆娱乐场所最新通知_郑州seo管理_网站页面优化内容包括哪些

2025/5/19 21:40:41 来源:https://blog.csdn.net/m0_68282144/article/details/147015369  浏览:    关键词:郑州博大泌尿外科医院_重庆娱乐场所最新通知_郑州seo管理_网站页面优化内容包括哪些
郑州博大泌尿外科医院_重庆娱乐场所最新通知_郑州seo管理_网站页面优化内容包括哪些

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

输入格式:

输入在一行中给出长度不超过1000的非空字符串。

输出格式:

在一行中输出最长对称子串的长度。

输入样例:

Is PAT&TAP symmetric?

输出样例:

11

代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int duiChengZiFuChuanlength(string zifuchuan,int left,int right)   //1.先求出这道题目所要求的对成字符串。 
{
    while(left>=0&&right<zifuchuan.length()&&zifuchuan[left]==zifuchuan[right])
    {
        left--;
        right++;
    }
    return right-left-1;   //经过循环后,此时的left实为左边界+1,而right为右边界+1,按原数正常求字符段长为right-left+1, 
}                          //而这里因为left和right的变化,所以是为(right+1)-(letf-1)+1=right-left+1。 

int duiChengZiFuChuanMaxLength(string zifuchuan)   //2.再从所有对称字符串中用两种计算方式求出最大对称字符串 
{
    if(zifuchuan.length()==0)  return 0;   //若长度为0,则直接返还0。 
    int maxLen=0;   //初始化最长对称字符串为0,方便后面求最长对称字符串。 
    for(int i=0;i<zifuchuan.length();i++)   //遍历所有的位置的字符串。 
    {
        int  len1=duiChengZiFuChuanlength(zifuchuan,i,i);   //一种是同一个字符开始查找。 
        int  len2=duiChengZiFuChuanlength(zifuchuan,i,i+1);   //另一种是初定一个字符和下一个字符开始查找。 
        int  len=max(len1,len2);   //存储单个i指定查找后的最大对称字符串。 
        maxLen=max(maxLen,len);    //所有对称字符串对比得出最大对称字符串。 
    }
    return maxLen;   
}

int main()
{
    string zifuchuan;              //3.再定义一个所需要输入的字符串,随后放入所写的函数后求出最大对称字符串。 
    getline(cin,zifuchuan);
    int x=duiChengZiFuChuanMaxLength(zifuchuan);
    cout<<x<<endl;
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com