题解 | #编号子回文I#

编号子回文I

https://www.nowcoder.com/practice/db5995cd4783483f8b9f7a9e3b3a479f

key:

  1. 横纵字符串反序构建二维矩阵
  2. 对角线计算dp,同时能保留最大长度与最大串的末尾索引
  3. 利用最大串的末尾索引和最大长度可以找到对应的序列
class Solution:
    def longestPalindrome(self , s: str) -> str:
        s_ = s[::-1]
        lenth = len(s)
        dp = [[0] * lenth for _ in range(lenth)]
        for i in range(lenth):
            if s[i] == s_[0]:
                dp[i][0] = 1
            if s_[i] == s[0]:
                dp[0][i] = 1
        
        MAX = 1
        result_i = 0
        for i in range(1, lenth):
            for j in range(1, lenth):
                if s[i] == s_[j]:
                    dp[i][j] = dp[i - 1][j - 1] + 1
                    if dp[i][j] > MAX:
                        MAX = dp[i][j]
                        result_i = i
        return s[result_i - MAX + 1: result_i + 1]

全部评论

相关推荐

27届毕业,最近想找一段大厂实习,感觉简历有些问题,好多都不给面,求大佬们指点,最近好焦虑
后端劝退第91人:我从后端的角度分析一下你的第一个项目,我感觉亮点不是很突出。因为我是因为组内有需求,临时上手学react干活。我用到的技术基本就cover你那个智慧园区管理平台的很多亮点了。那作为比较专业的前端,你上述的内容是不是有点单薄呢。感觉还得包装
点赞 评论 收藏
分享
渴望wlb的牛油果很...:直说卡第一学历不就行了 非得拐弯抹角
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务