8.22 - hard - 90

471. Encode String with Shortest Length

一道对角线型dp题目,对角线是我自己总结的说法,就是要先初始化对角线上的区间,然后再一层一层朝外扩展。这样的题目第一层用距离来表示,然后循环i,然后计算出j,这样我觉得比较好想一些

class Solution(object):
    def encode(self, s):
        """
        :type s: str
        :rtype: str
        """
        # 又是有点像对角线DP
        # dp[i][j]表示i,j之间的string可以encode成某个string
        dp = [["" for _ in range(len(s))] for _ in range(len(s))]
        
        for l in range(len(s)):
            for i in range(len(s)-l):
                j = i+l
                substr = s[i:j+1]
                # Checking if string length < 5. In that case, we know that encoding will not help.
                if j - i < 4:
                    dp[i][j] = substr
                else:
                    dp[i][j] = substr
                    for k in range(i, j):
                        if len(dp[i][k] + dp[k+1][j]) < len(dp[i][j]):
                            dp[i][j] = dp[i][k] + dp[k+1][j]

                    # Loop for checking if string can itself found some pattern in it which could be repeated.
                    for k in range(len(substr)):
                        repeatStr = substr[0:k+1]
                        d = len(substr)/len(repeatStr)
                        if repeatStr and len(substr)%len(repeatStr) == 0 and substr == repeatStr*d:
                            ss = str(d) + "[" + dp[i][i+k] + "]"
                            if len(ss) < len(dp[i][j]):
                                dp[i][j] = ss
        return dp[0][len(s)-1]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,860评论 0 33
  • 动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...
    廖少少阅读 3,619评论 0 18
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 2,048评论 0 2
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,967评论 0 89
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 18,335评论 2 36

友情链接更多精彩内容