• [Leetcode]@python 97. Interleaving String


    题目链接

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

    题目原文

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2.

    For example,
    Given:
    s1 = "aabcc",
    s2 = "dbbca",

    When s3 = "aadbbcbcac", return true.
    When s3 = "aadbbbaccc", return false.

    题目大意

    给定字符串s1, s2, s3,判断s3是否由s1和s2交叉组成的

    解题思路

    动态规划:dp[i][j]表示s1[0...i-1]和s2[0...j-1]是否可以拼接为s3[0...i+j-1],可以拼接为true,不可以拼接为false

    代码

    class Solution(object):
        def isInterleave(self, s1, s2, s3):
            """
            :type s1: str
            :type s2: str
            :type s3: str
            :rtype: bool
            """
            if len(s1) + len(s2) != len(s3):
                return False
            dp = [[False for i in range(len(s2) + 1)] for j in range(len(s1) + 1)]
            dp[0][0] = True
    
            for i in range(1, len(s1) + 1):
                if dp[i - 1][0] and s3[i - 1] == s1[i - 1]:
                    dp[i][0] = True
            for i in range(1, len(s2) + 1):
                if dp[0][i - 1] and s3[i - 1] == s2[i - 1]:
                    dp[0][i] = True
    
            for i in range(1, len(s1) + 1):
                for j in range(1, len(s2) + 1):
                    if (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]):
                        dp[i][j] = True
            return dp[len(s1)][len(s2)]
    
  • 相关阅读:
    MySQL学习笔记:repeat、loop循环
    链表//相交链表
    单位和值
    链表//环形链表 II
    css样式设置小技巧
    链表//环形链表
    CSS代码缩写,占用更少的带宽
    CSS布局模型
    CSS盒模型
    CSS格式化排版
  • 原文地址:https://www.cnblogs.com/slurm/p/5221580.html
Copyright © 2020-2023  润新知