最长回文子串

题目描述:
给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串

示例:

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

使用动态规划解决此问题
设dp[i][j]是字符串从i到j是否回文
当s[i]!=s[j]时 => dp[i][j]为false
当s[i]=s[j]时且j-i<3时 => dp[i][j]为true
当s[i]=s[j]时且j-i>=3时 => dp[i+1][j-1]

在这里插入图片描述

class Solution:
    def longestPalindrome(self, s: str) -> str:
        n = len(s)
        if n == 0:
            return ""
        
        dp = [[False] * n for _ in range(n)]
        for i in range(n):
            dp[i][i] = True
        
        start, max_length = 0, 1
        for i in range(n - 1):
            if s[i] == s[i + 1]:
                dp[i][i + 1] = True
                start = i
                max_length = 2

        for length in range(3, n + 1):
            for i in range(n - length + 1):
                j = i + length - 1
                if dp[i + 1][j - 1] and s[i] == s[j]:
                    dp[i][j] = True
                    start = i
                    max_length = length
        return s[start:start + max_length]

相关推荐

  1. 5.

    2024-04-26 23:46:02       49 阅读
  2. 5.

    2024-04-26 23:46:02       34 阅读
  3. 5.

    2024-04-26 23:46:02       28 阅读
  4. Leetcode【

    2024-04-26 23:46:02       23 阅读
  5. LeetCode-5

    2024-04-26 23:46:02       50 阅读
  6. 力扣5.

    2024-04-26 23:46:02       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 23:46:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 23:46:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 23:46:02       82 阅读
  4. Python语言-面向对象

    2024-04-26 23:46:02       91 阅读

热门阅读

  1. nodejs

    nodejs

    2024-04-26 23:46:02      40 阅读
  2. 【动态规划】Leetcode 32. 最长有效括号【困难】

    2024-04-26 23:46:02       34 阅读
  3. 启动MySQL服务

    2024-04-26 23:46:02       37 阅读
  4. 38 事件

    2024-04-26 23:46:02       37 阅读