zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 17

    Scramble String

    这题其实用递归可以不TLE的,主要是有些预判可以剪枝,3d dp的方法就有点繁琐了。

    • 剪枝1:两个string length不相同,返回False
    • 剪枝2:两个string相同,直接返回True
    • 剪枝3:两个string排序,不相同返回False
    class Solution(object):
        def isScramble(self, s1, s2):
            """
            :type s1: str
            :type s2: str
            :rtype: bool
            """
            if s1==s2: return True
            if len(s1)!=len(s2): return False
            l1 = list(s1)
            l2 = list(s2)
            l1.sort();l2.sort()
            if l1!=l2: return False
            n = len(s1)
            for i in xrange(1, n):
                if self.isScramble(s1[:i],s2[:i]) and self.isScramble(s1[i:],s2[i:]): return True
                if self.isScramble(s1[:i],s2[n-i:]) and self.isScramble(s1[i:],s2[:n-i]): return True
                
            return False
            
    
  • 相关阅读:
    快速幂,矩阵乘法,矩阵快速幂
    关于xor
    数位dp
    tarjan,割边,桥,割点
    RMQ,ST表,dp
    逆序对,树状数组,归并排序
    线段树
    dp,LCS
    清北 游
    青蛙的约会(扩展欧几里得)
  • 原文地址:https://www.cnblogs.com/absolute/p/5677873.html
Copyright © 2011-2022 走看看