• 最长对称子串



    title: L2-008. 最长对称子串
    tags: [天梯赛]

    题目链接

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

    输入格式:

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

    输出格式:

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

    输入样例:

    Is PAT&TAP symmetric?
    
    

    输出样例:

    11
    

    分析

    直接暴力肯定会超时,讲一下别人的思路:外层循环遍历字符串的位置,并且以此位置作为对称轴,内层循环以此对称轴为中心,来检查离对称轴左右相等距离的位置的字符是否相同,若相同,让距离增加一个,并且记录下来满足条件的字符个数。

    代码

    #include <iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int main() {
    
        char a[1005];
        gets(a);
        int len=strlen(a);
        int maxLen=1;
        for(int i=0;i<len;i++)
        {
             //这是回文串的个数为奇数的情况
            int temp=1;//对称轴本身就是一个
            for(int j=1;j<len;j++)
            {
              //j==1时,i-j,对称轴左边一个的字符  ,i+j  对称轴右边一个的字符
           
                if(i-j>=0&&i+j<len&&a[i-j]==a[i+j])
                    temp+=2;//左右各扩展一个,所以是加2
                else break;
            }
            maxLen=max(maxLen,temp);
          //这是回文串的个数为偶数的情况
            temp=0;
            for(int j=1;j<len;j++)
            {
                if(i-j+1>=0&&i+j<len&&a[i-j+1]==a[i+j])
                    temp+=2;
                else break;
            }
            maxLen=max(maxLen,temp);
        }
        cout<<maxLen;
    
    
        return 0;
    }
    
    
  • 相关阅读:
    Ubuntu各种indicator汇总
    python 命令行参数获取
    python 内置方法的时间复杂度
    SkipList 跳表
    HBase Snapshot功能介绍
    HBase内部操作日志说明
    HBase参数配置及说明
    HBase 在HDFS 上的目录树
    第一章 重构,第一个案例
    shell来start、stop、restart应用程序模板
  • 原文地址:https://www.cnblogs.com/dccmmtop/p/6710406.html
Copyright © 2020-2023  润新知