[Leetcode] 97. Interleaving String 解题报告
来源:互联网 发布:js做99乘法表知乎 编辑:程序博客网 时间:2024/06/15 17:48
题目:
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.
思路:
又是一道典型的动态规划题目:我们定义dp[i][j]表示s1的前i个字符和s2的前j个字符是否可以以interleaving的方式形成s3的前(i+j)个字符。那么递推式可以分为如下两种情况:
1)如果s1[i-1] == s3[i+j-1],此时检查dp[i-1][j]是否为true即可;
2)如果s2[j-1] == s3[i+j-1],此时检查dp[i][j-1]是否为true即可。
以上两个条件只要满足其一,就说明s1的前i个字符和s2的前j个字符是否可以以interleaving的方式形成s3的前(i+j)个字符。
代码:
class Solution {public: bool isInterleave(string s1, string s2, string s3) { if(s1.length() + s2.length() != s3.length()) { return false; } vector<vector<bool>> dp(s1.length() + 1, vector<bool>(s2.length() + 1, true)); dp[0][0] = true; for(int i = 1; i <= s1.length(); ++i) { dp[i][0] = (s1[i - 1] == s3[i - 1] && dp[i-1][0]); } for(int j = 1; j <= s2.length(); ++j) { dp[0][j] = (s2[j-1] == s3[j-1] && dp[0][j-1]); } for(int i = 1; i <= s1.length(); ++i) { for(int j = 1; j <= s2.length(); ++j) { dp[i][j] = (s1[i-1] == s3[i+j-1] && dp[i-1][j]) || (s2[j-1] == s3[i+j-1] && dp[i][j-1]); } } return dp[s1.length()][s2.length()]; }};
0 0
- [leetcode] 97. Interleaving String 解题报告
- [Leetcode] 97. Interleaving String 解题报告
- 【LeetCode】Interleaving String 解题报告
- [LeetCode] Interleaving String 解题报告
- Leetcode 97. Interleaving String 交错字符判别 解题报告
- LeetCode(97) Interleaving String解题报告
- Interleaving String解题报告
- leetCode 97.Interleaving String (交错字符串) 解题思路和方法
- LeetCode 97. Interleaving String
- [LeetCode]97.Interleaving String
- [Leetcode] 97. Interleaving String
- LeetCode --- 97. Interleaving String
- [leetcode] 97.Interleaving String
- [leetcode] 97.Interleaving String
- leetcode 97. Interleaving String
- Leetcode - 97.Interleaving String
- leetcode 97. Interleaving String
- LeetCode 97. Interleaving String
- OOP(面向对象编程)设计五大原则
- Log4j使用笔记(一):详细使用步骤及log4j.properties解析
- JAVA WEB基础-认识XML
- java中成员函数内部为何不可以定义静态变量?
- 常见的网站漏洞
- [Leetcode] 97. Interleaving String 解题报告
- 模糊控制-模糊性知识的应用问题
- ListView原理概述
- 第一单元
- Towards String-to-Tree Neural Machine Translation
- centOS目录结构详细版
- [转载]深入理解JavaScript执行上下文、函数堆栈、提升的概念
- 如何让td中的div居中
- UCOS-II任务管理1