zoukankan      html  css  js  c++  java
  • [leetcode]Interleaving String @ Python

    原题地址:https://oj.leetcode.com/problems/interleaving-string/

    题意:

    Given s1s2s3, 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.

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

    代码:

    class Solution:
        # @return a boolean
        def isInterleave(self, s1, s2, s3):
            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):
                dp[i][0] = dp[i-1][0] and s3[i-1]==s1[i-1]
            for i in range(1,len(s2)+1):
                dp[0][i] = dp[0][i-1] and s3[i-1]==s2[i-1]
            for i in range(1,len(s1)+1):
                for j in range(1,len(s2)+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])
            return dp[len(s1)][len(s2)]
  • 相关阅读:
    hibernate
    杨辉三角
    查看端口号
    一个线程同步问题的例子
    SQL关系数据库设计三大范式
    C#OpenFileDialog的使用
    莫队算法
    蒟蒻已知的高能数学公式
    C++ 产生随机数
    C++ 输出小数点后 n 位
  • 原文地址:https://www.cnblogs.com/zuoyuan/p/3767650.html
Copyright © 2011-2022 走看看