LeetCode 97 Interleaving String(Python详解及实现)
2017-08-11 10:16
585 查看
【题目】
Given s1, s2, s3, find whether s3 is formedby the interleaving of s1 and s2.
For example,
Given:
s1 = "aabcc",
s2 = "dbbca",
When s3 = "aadbbcbcac", returntrue.
When s3 = "aadbbbaccc", returnfalse.
给定三个字符串S1,S2,S3,判断S3是否能够由S1,S2交错组合而成。
【思路】
二维动态规划:
s1 = "aabcc" s2 = "dbbca" s3 = "aadbbcbcac"
![](https://oscdn.geek-share.com/Uploads/Images/Content/201708/e4f6e8e71363673a8fedebe47d8d2cd8)
s1, s2只有两个字符串,因此可以展平为一个二维地图,判断是否能从左上角走到右下角。dp[i][j]就表示s1的前i个和s2的前j个是否和s3的前i+j个匹配成功
标1的匹配成功。
当s1到达第i个元素,s2到达第j个元素:
地图上往右一步就是s2[ j-1]匹配s3[i+j-1]。
地图上往下一步就是s1[ i-1]匹配s3[i+j-1]。
【Python实现】
Given s1, s2, s3, find whether s3 is formedby the interleaving of s1 and s2.
For example,
Given:
s1 = "aabcc",
s2 = "dbbca",
When s3 = "aadbbcbcac", returntrue.
When s3 = "aadbbbaccc", returnfalse.
给定三个字符串S1,S2,S3,判断S3是否能够由S1,S2交错组合而成。
【思路】
二维动态规划:
s1 = "aabcc" s2 = "dbbca" s3 = "aadbbcbcac"
s1, s2只有两个字符串,因此可以展平为一个二维地图,判断是否能从左上角走到右下角。dp[i][j]就表示s1的前i个和s2的前j个是否和s3的前i+j个匹配成功
标1的匹配成功。
当s1到达第i个元素,s2到达第j个元素:
地图上往右一步就是s2[ j-1]匹配s3[i+j-1]。
地图上往下一步就是s1[ i-1]匹配s3[i+j-1]。
【Python实现】
class Solution(object): def isInterleave(self, s1, s2, s3): """ :type s1: str :type s2: str :type s3: str :rtype: bool """ len_s1 = len(s1) len_s2 = len(s2) len_s3 = len(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)] for i in range(0,len_s1 + 1): for j in range(0,len_s2 + 1): if i == 0 and j == 0: dp[i][j] = True elif i == 0: dp[i][j] = dp[i][j-1] and (s2[j-1] == s3[j-1]) elif j == 0: dp[i][j] = dp[i-1][j] and (s1[i-1] == s3[i-1]) else: 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]
相关文章推荐
- leetcode_[python/C++]_97_Interleaving String_动态规划
- [LeetCode 97] Interleaving String(Python)
- LeetCode 97 — Interleaving String (C++ Python)
- leetcode 97: Interleaving String
- LeetCode(97) Interleaving String
- 99. Interleaving String Leetcode Python
- [leetcode]Interleaving String @ Python
- leetcode[97]Interleaving String
- LeetCode 97(Interleaving String)Java
- LeetCode 97 Interleaving String
- leetcode_question_97 Interleaving String
- 【leetcode】String——Interleaving String(97)
- LeetCode 97 Interleaving String
- Leetcode 97 Interleaving String
- [Leetcode]97. Interleaving String @python
- LeetCode[97]::Interleaving String C++
- leetcode[97] Interleaving String
- [LeetCode]题解(python):097-Interleaving String
- LeetCode(97) Interleaving String
- Leetcode-97 Interleaving String