zoukankan      html  css  js  c++  java
  • leetcode算法题基础(三十五)动态规划(三)5. 最长回文子串

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

    示例 1:

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

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/longest-palindromic-substring
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution(object):
        def longestPalindrome(self, s):
            n = len(s)
            dp = [[0] * n for _ in range(n)]
            max_len = float("-inf")
            res = ""
            for i in range(n):
                # dp[i][i] = 1
                for j in range(i, -1, -1):
                    if s[i] == s[j] and (i - j < 2 or dp[i - 1][j + 1]):
                        dp[i][j] = 1
    
                    if dp[i][j] and i - j + 1 > max_len:
               
                        max_len = i - j + 1
                        res = s[j:i + 1]
            # print(dp)
            return res

    关键:
    循环字符串一次,以回文长度为基础,试探当前长度,当前循环位置下,
    (1)前后各加一是否构成回文,(2)或者往后加一是否构成回文。
    之后返回起始位置及最长长度构成的字符串

    class Solution(object):
        def longestPalindrome(self, s):
            str_length = len(s)
            max_length = 0
            start = 0
            for i in range(str_length):
                if i - max_length >= 1 and s[i - max_length - 1:i + 1] == s[i - max_length - 1:i + 1][::-1]:
                    start = i - max_length - 1
                    max_length += 2
                    continue
                if i - max_length >= 0 and s[i - max_length:i + 1] == s[i - max_length:i + 1][::-1]:
                    start = i - max_length
                    max_length += 1
            return s[start:start + max_length]

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/14004611.html

  • 相关阅读:
    給COMBOBOX增加VALUE和名称(完全解决)
    api控制系统服务
    .net 函数注析
    电容降压式电源
    光电耦合器的应用
    javascrip判断null和undefined
    光电耦合器
    Windows 系统错误代码
    Request.ServerVariables
    获得操作系统版本
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14004611.html
Copyright © 2011-2022 走看看