美文网首页
8.22 - hard - 90

8.22 - hard - 90

作者: 健时总向乱中忙 | 来源:发表于2017-08-23 08:48 被阅读0次

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]

相关文章

  • 8.22 - hard - 90

    471. Encode String with Shortest Length 一道对角线型dp题目,对角线是我自...

  • 8.22 - hard - 85

    440. K-th Smallest in Lexicographical Order 和之前有一道386. Le...

  • 8.22 - hard - 86

    446. Arithmetic Slices II - Subsequence 一道dp的题目

  • 8.22 - hard - 87

    460. LFU Cache 有点做不动了。。。基本思想是。。。(这题要重看,先休息一会)

  • 8.22 - hard - 88

    465. Optimal Account Balancing 这道题挺有意思的,用greedy的方法

  • 8.22 - hard - 89

    466. Count The Repetitions这题好困难,看了答案也很难理解,估计只能背答案了。。。等复习的...

  • 8.22 - hard - 81

    411. Minimum Unique Word Abbreviation 利用比较基本的方法,backtrack...

  • 8.22 - hard - 83

    425. Word Squares 利用Trie和backtracking来做。利用trie来找prefix

  • 8.22 - hard - 84

    432. All O`one Data Structure 基本的想法就是利用一个双向链表来维持单调性,每个nod...

  • 8.22 - hard - 82

    420. Strong Password Checker 这道题要分成几种情况做When len > 20, we...

网友评论

      本文标题:8.22 - hard - 90

      本文链接:https://www.haomeiwen.com/subject/bcgrdxtx.html