• L2-008. 最长对称子串


    L2-008. 最长对称子串

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

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

    输入格式:

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

    输出格式:

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

    输入样例:
    Is PAT&TAP symmetric?
    
    输出样例:
    11
    
    思路:先将原字符串倒着拷贝下来,然后逐个比较是否相等,注意剪枝否则会超时,然后还是就是输出最小值为1这是一个测试点。下面再提供一个测试点
    输入样例:
    aaa
    输出样例:
    3
    
    
    #include<string>
    #include<iostream>
    using namespace std;
    int main()
    {
        string str, cstr="";
        getline(cin, str);
    
        for (int i = str.length() - 1; i >= 0; i--)
            cstr += str[i];
        
        unsigned max = 1;                        //最小值为1
        for (unsigned i = 0; i < cstr.length(); i++){
            if (cstr.length() - i <= max)break;        //剪枝
            for (unsigned j = 0; j < str.length(); j++){
                if (str.length() - j <= max)break;        //剪枝
                if (cstr[i] == str[j]){
                    int k = 0;
                    do{
                        if (i + k >= cstr.length())break;
                        if (j + k >= str.length())break;
                        k++;
                    } while (cstr[i + k] == str[j + k]);
                //    for (k = 0; cstr[i + k] == str[j + k]; k++);   这个就是原先过不去的语句
                    if (k>max)max = k;
                }
            }
        }
        cout << max << endl;
        return 0;
    }
    
    
    
     
  • 相关阅读:
    Form 中调用指定请求并给定默认参数
    OAF 汇总行的做法
    EBS 开发常用SQL
    EBS 中常用的配置文件及说明
    OAF 常见概念介绍
    OAF 多语言的实现
    OAF 个性化基础
    OAF 开发前置配置
    条款20 STL函数对象
    条款19 command 模式与好莱坞法则
  • 原文地址:https://www.cnblogs.com/zengguoqiang/p/8665810.html
Copyright © 2020-2023  润新知