zoukankan      html  css  js  c++  java
  • 97. Interleaving String

    """
    97. Interleaving String
    Hard

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

    Example 1:

    Input: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
    Output: true
    Example 2:

    Input: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
    Output: false
    """

    现有三个字符串s1,s2,s3,判断s3是否是由s1,s2穿插拼接得到的,所谓穿插拼接就是说s1,s2看做是两个队列,里面的元素不断的进队,每次进队元素是哪个队伍是任意的,最后得到一个新的字符串,满足这样的条件就是穿插拼接.

    可以用动态规划做,易得

    class Solution(object):
        def isInterleave(self, s1, s2, s3):
            """
            :type s1: str
            :type s2: str
            :type s3: str
            :rtype: bool
            """
            l1, l2, l3 = len(s1), len(s2), len(s3)
            if l1 + l2 != l3:
                return False
            resultmatrix = [[None for j in range(l2+1)] for i in range(l1+1)]
            resultmatrix[0][0] = True
            for i in range(1, l1+1):
                resultmatrix[i][0] = resultmatrix[i-1][0] and (s1[i-1]==s3[i-1])
            for j in range(1, l2+1):
                resultmatrix[0][j] = resultmatrix[0][j-1] and (s2[j-1]==s3[j-1])
            for i in range(1, l1+1):
                for j in range(1, l2+1):
                    e1, e2, e3 = s1[i-1], s2[j-1], s3[i+j-1]
                    if e3 == e1 and e3 == e2:
                        resultmatrix[i][j] = resultmatrix[i][j-1] or resultmatrix[i-1][j]
                    elif e3 == e1:
                        resultmatrix[i][j] = resultmatrix[i-1][j]
                    elif e3 == e2:
                        resultmatrix[i][j] = resultmatrix[i][j-1]
                    else:
                        resultmatrix[i][j] = False
            return resultmatrix[l1][l2]
  • 相关阅读:
    SpringCloud微服务基础学习
    EF6 + MySql 建立项目引用失败
    Forword(请求转发)与Redirect(重定向)区别
    Java 中 Hashtable与HashMap的区别
    cookie和session
    configparser模块的简单使用
    列表中的陷阱
    Python3面向对象编程总结
    Python---RabbitMQ的使用
    Django的template自定义函数的创建和使用
  • 原文地址:https://www.cnblogs.com/mangmangbiluo/p/10358678.html
Copyright © 2011-2022 走看看