zoukankan      html  css  js  c++  java
  • PAT 甲级 1040 Longest Symmetric String 双指针

    地址 https://pintia.cn/problem-sets/994805342720868352/problems/994805446102073344

    题目大意是
    
    输入一行字符串,请输出最长的回文子串的长度 。
    
    回文定义 字符串正反的读出结果是一样的 比如123321 比如aba
    
    Sample Input:
    Is PAT&TAP symmetric?
    Sample Output:
    11

    最长回文子串在Leetcode系列和剑指Offer系列都有提到过

    可以使用动态规划和双指针检测 这里使用双指针检测 

     

    #include <iostream>
    #include <string>
    #include <string.h>
    using namespace std;
    
    int ans = 1;
    
    void Check(char s[]){
        int size = strlen(s);
        for(int i = 1;i<size-1;i++){
            int l = i-1; int r= i+1;
            while(l>=0 && r<size){
                if(s[l] == s[r]){ans = max(ans,r-l+1); l--;r++; }
                else {break;}
            }
        }
       
        for(int i =1;i<size-2;i++){
            if(s[i]!=s[i+1]) continue;
            ans = max(2,ans);
            int l= i-1;int r= i+2;
            while(l>=0&&r<size ){
                if(s[l]==s[r]){
                    ans = max(ans,r-l+1);
                    l--;r++;
                    }
                else {break;}
            }
        }
     
    }
    
    int main(){
        //string s;
        //getline(cin, s); // 要读入空格
        char s[1012];
        cin.get(s, 1012);///这样可以输入空格,遇回车终止输入,上面注释那行输入也可以
        Check(s);
        cout << ans << endl;
        return 0;
    }
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    打造自己的 C# WinForm 应用程序的 SQL Server 连接配置界面
    怎么修改app.config的值
    将DATATABLE中的数据导入到数据库中
    C# 多线程使用progressBar进度条控件
    程序员技术练级攻略2
    c#中Setting.setting的使用
    该行已经属于另一个表
    Microsoft 数据访问技术的过去、现在和未来
    Winform专栏
    在 C# 中使用设置 Settings.settings
  • 原文地址:https://www.cnblogs.com/itdef/p/14399497.html
Copyright © 2011-2022 走看看