zoukankan      html  css  js  c++  java
  • 97. 交错字符串

    递归,DP两种方法

    https://leetcode-cn.com/problems/interleaving-string/

    class Solution:
        def isInterleave(self, s1: str, s2: str, s3: str) -> bool:
            # if sorted(s1+s2)!=sorted(s3):
            #     return False
            # l1,l2,l3 = len(s1),len(s2),len(s3)
            # # if l1==l2==l3==0:return True
            # dp = [[False]*(l2+1) for _ in range(l1+1)]
            # dp[0][0] = True
            # i=j=-1
            # while i<l1-1:
            #     i+=1
            #     if s1[i]==s3[i]:dp[i+1][0]=True
            #     else: break
            # while j<l2-1:
            #     j+=1
            #     if s2[j] == s3[j]:dp[0][j+1]=True
            #     else:break
    
            # for i in range(1,l1+1):
            #     for j in range(1,l2+1):
            #         # 比如 s1第三个数 s2第二个数 i=3 j=2; s1[2] == s3[3+2-1]
            #         dp[i][j] = (dp[i-1][j] and s1[i-1]==s3[i+j-1]) or (dp[i][j-1] and s2[j-1]==s3[i+j-1])
            # for i in dp:
            #     print(i)
            # return dp[-1][-1]
    
            l1,l2,l3 = len(s1),len(s2),len(s3)
            p1=p2=p3=0
            while p1<l1 and p2<l2 and p3<l3:
                if s1[p1]==s2[p2]==s3[p3]:
                    res1 = self.isInterleave(s1[p1+1:], s2[p2:], s3[p3+1:]) 
                    res2 = self.isInterleave(s1[p1:], s2[p2+1:], s3[p3+1:])
                    res = res1 or res2
                    return res
                elif s1[p1] == s3[p3]:
                    p1+=1
                    p3+=1
                elif s2[p2] == s3[p3]:
                    p2+=1
                    p3+=1
                else:
                    return False
            if p1==l1:
                return s2[p2:] == s3[p3:]
            elif p2 == l2:
                return s1[p1:] == s3[p3:]
    

      

  • 相关阅读:
    《架构整洁之道》阅读笔记
    设计模式——单例模式
    设计模式——工厂模式使用
    记一次同事安装我自定义一Python3 SDK在window10安装失败情况
    CentOS7常用的一些命令
    Java
    Java
    Java
    Java
    python
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/14143589.html
Copyright © 2011-2022 走看看