zoukankan      html  css  js  c++  java
  • leetcode 5. 最长回文子串

    1. 题目描述

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

    示例 1:

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

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

    2. 思路

      参考 https://blog.csdn.net/xinxin100011/article/details/81235483 。

    3.代码

    class Solution:
        def longestPalindrome(self, s: str) -> str:
            k = len(s)
            # k = len(s)        # 计算字符串的长度
            matrix = [[0 for i in range(k)] for i in range(k)] # 初始化n*n的列表
            logestSubStr = "" # 存储最长回文子串
            logestLen = 0  # 最长回文子串的长度
    
            for j in range(0, k):
                for i in range(0, j + 1):
                    if j - i <= 1:
                        if s[i] == s[j]:
                            matrix[i][j] = 1 # 此时f(i,j)置为true
                            if logestLen < j - i + 1:  # 将s[i:j]的长度与当前的回文子串的最长长度相比 
                                logestSubStr = s[i:j + 1]  # 取当前的最长回文子串
                                logestLen = j - i + 1  # 当前最长回文子串的长度
                    else:
                        if s[i] == s[j] and matrix[i + 1][j - 1]: # 判断
                            matrix[i][j] = 1
                            if logestLen < j - i + 1:
                                logestSubStr = s[i:j + 1]
                                logestLen = j - i + 1
            return logestSubStr
  • 相关阅读:
    基于Spring的集群会话共享方案-spring session
    Tensorflow 模型线上部署
    Dijkstra算法
    BFS和DFS
    图的基本概念
    排序5
    排序4
    排序3
    排序2
    排序1
  • 原文地址:https://www.cnblogs.com/xiaotongtt/p/11374594.html
Copyright © 2011-2022 走看看