码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 5. 最长回文子串


    文章目录

      • 题目描述
      • 做题思路
      • 代码实现
      • 题目链接

    题目描述

    • 给你一个字符串 s,找到 s 中最长的回文子串。

      示例 1:

      输入:s = “babad”
      输出:“bab”
      解释:“aba” 同样是符合题意的答案。
      示例 2:

      输入:s = “cbbd”
      输出:“bb”

      提示:

      1 <= s.length <= 1000
      s 仅由数字和英文字母组成


    做题思路

    中心扩散法

    我们假设每一个位置上的元素都有可能产生最长的回文串

    当前位置为 i

    我们先判断左边和i相等的

    在判断i右边和i相等的

    左后我们在判断左右两边相等的元素

    这就叫做中心扩散法


    动态规划法:减少不必要的重复比较

    boolean[][] dp=new boolean[n][n];
    dp[l][r] 表示l到r这段是回文
    想一下,如果我们在判断了  s.charAt(l)==s.charAt(r)之后,我们是不是只需要在判断一下
        s.charAt(l+1)==s.charAt(r-1)  是否是回文就行了?这样就减少了呃重复的判断
    
    • 1
    • 2
    • 3
    • 4

    代码实现

    //中心扩散法
    class Solution {
        public String longestPalindrome(String s) {
            if(s==null || s.length()<2)return s;
            int len=s.length();
            int maxStart=0;
            int maxlen=0;
            int strLen=1;
            for(int i=0;i<len;i++){
                int left=i-1;
                int right=i+1;
                while(left>=0 && s.charAt(left)==s.charAt(i)){
                    left--;
                    strLen++;
                }
                while(right<len && s.charAt(right)==s.charAt(i)){
                    right++;
                    strLen++;
                }
                while(left>=0 && right<len && s.charAt(left)==s.charAt(right)){
                    left--;
                    right++;
                    strLen+=2;
                }
                if(strLen>maxlen){
                    maxlen=strLen;
                    maxStart=left;
                }
                strLen=1;
            }
            return s.substring(maxStart+1,maxlen+maxStart+1);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    //动态规划法
    class Solution {
        public String longestPalindrome(String s) {
            if(s==null || s.length()<2)return s;
            int len=s.length();
            boolean[][] dp=new boolean[len][len];
            int maxStart=0;
            int maxEnd=0;
            int maxLen=0;
            for(int r=1;r<len;r++){
                for(int l=0;l<r;l++){
                    if((s.charAt(l)==s.charAt(r))&&(r-l<=2 || dp[l+1][r-1]))
                    {
                        dp[l][r]=true;
                        if(r-l+1 > maxLen){
                            maxLen=r-l+1;
                            maxStart=l;
                            maxEnd=r;
                        }
                    }
                }
            }
            return s.substring(maxStart,maxEnd+1);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    题目链接

    5. 最长回文子串

  • 相关阅读:
    基于MybatisPlus代码生成器(2.0新版本)
    Codeforces Round 933 (Div. 3) A~D
    【微服务治理之监控APM】系统监控架构概述
    NFT Insider#110:The Sandbox与T&B Media Global合作,YGG Web3游戏峰会阵容揭晓
    VISUAL STUDIO调试器指南---断点和跟踪点
    分销系统功能有哪些?好的分销比例如何设定?
    OpenCV-Python小应用(五):基于模板匹配的图像拼接
    pycharm进阶使用学习
    设计模式:外观模式(C++实现)
    一文读懂!机器人自动化解决方案的应用领域和前景
  • 原文地址:https://blog.csdn.net/C_x_330/article/details/127400936
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号