zoukankan      html  css  js  c++  java
  • Leetcode_05【最长回文子串】

    文章目录:

    • 题目
    • 脚本一及注释
    • 脚本一逻辑

    题目:

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

    示例 1:

    输入: "babad"
    输出: "bab"
    注意: "aba" 也是一个有效答案。
    示例 2:

    输入: "cbbd"
    输出: "bb"


    脚本一及注释:【用时:4500ms】

    class Solution:                          #leetcode固定模式:定义一个类
        def longestPalindrome(self, s: str) -> str:       #类中的方法及形参输入
            num1 = len(s)                       #获取给定字符串的长度
            if s == "":                        #若给定的字符串为空字符串
                return("")                      #则返回一个空字符串
            aa = 1                           #定义一个变量啊啊,并赋值为1,用于获取字符串分片
            for i in range(num1 - 1,-1,-1):            #此处for循环从给定字符串的个数的最大值开始,并且步长为-1
                for j in range(aa):                 #此处的aa变量决定循环的次数
                    str1 = s[j:j+i+1]                #获取字符串对应的分片
                    str2 = str1[::-1]                #字符串反转
                    if str1 == str2:                 #判断两字符串是否一样
                        return(str1)                 #若一样,则返回此字符串
                aa = aa + 1                      #若不一样则变量aa增加一

    脚本一逻辑:

    • 首先回文字符串的要求是字符串反转后是相等的,这一题笔者之前是使用shell来求解的,思路与这次不一样[https://blog.csdn.net/weixin_43428906/article/details/102654258],这是shell脚本的链接,它是采用了“逼近”的方法
    • 而此处是使用了“分片对比”的方法来获取最长回文字符串,下面介绍一下笔者的处理逻辑:
      • 最长回文字符串必定存在于字符串的某一位置,只需获取出来进行判断即可
      • 笔者使用“分片对比”的思想来获取最长回文字符串,比如:abbc可有的分片为:abbc、abb、bbc、ab、bb、bc、a、b、b、c、;其中最长的分片为"bb"
      • 为了减少循环迭代的次数,脚本从获取最长分片开始迭代,只要碰到回文字符串,则此回文字符串就是最长回文字符串,此时只需要返回该字符串并退出程序即可
  • 相关阅读:
    Android Media Playback 中的MediaPlayer的用法及注意事项(二)
    Android Media Playback 中的MediaPlayer的用法及注意事项(一)
    34. Search for a Range
    33. Search in Rotated Sorted Array
    32. Longest Valid Parentheses
    31. Next Permutation下一个排列
    30. Substring with Concatenation of All Words找出串联所有词的子串
    29. Divide Two Integers
    28. Implement strStr()子串匹配
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/mailong/p/12003069.html
Copyright © 2011-2022 走看看