zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):097-Interleaving String

    题目来源:

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


    题意分析:

      给定字符串s1,s2,s3,判断s3是否由s1和s2穿插组成。如“abc”由“ac”,“b”组成,而“cba”不是。


    题目思路:

      这是一个动态规划问题。令ans[i][j]为s1[:i]和s2[:j]匹配是否成功。那么动态方程是if s1[i - 1] == s3[i + j - 1] 那么ans[i][j] = ans[i][j] or ans[i - 1][j];if s2[j - 1] ==  s3[i + j - 1] 那么ans[i][j] = ans[i][j] or ans[i][j - 1]。


    代码(python):

      

    class Solution(object):
        def isInterleave(self, s1, s2, s3):
            """
            :type s1: str
            :type s2: str
            :type s3: str
            :rtype: bool
            """
            i,j,k = 0,0,0
            m,n,t = len(s1),len(s2),len(s3)
            if m + n != t:
                return False
            ans = [[False for i in range(n+1)] for j in range(m+1)]
            ans[0][0] = True
            for i in range(1,m+1):
                if s1[i - 1] == s3[i - 1]:
                    ans[i][0] = True
                else:
                    break
            for i in range(1,n + 1):
                if s2[i - 1] == s3[i -1]:
                    ans[0][i] = True
                else:
                    break
            for i in range(1,m + 1):
                for j in range(1,n + 1):
                    if s1[i - 1] == s3[i + j - 1]:
                        ans[i][j] = ans[i][j] or ans[i - 1][j]
                    if s2[j - 1] == s3[i + j - 1]:
                        ans[i][j] = ans[i][j] or ans[i][j - 1]
            return ans[m][n]
            
    View Code
  • 相关阅读:
    深入NET框架
    解决idea中maven的pom文件不会自动下载jar包问题
    JSP中的作用域
    转发与重定向
    JSP内置对象
    JNDI与连接池
    文件上传
    七大设计原则
    第六章 初始继承和多态
    C#和.NET框架
  • 原文地址:https://www.cnblogs.com/chruny/p/5215308.html
Copyright © 2011-2022 走看看