97. Interleaving String
2016-09-09 13:46
183 查看
Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2.
For example,
Given:
s1 =
s2 =
When s3 =
When s3 =
判断目标字符串是否由两个原字符串字符交叉构成
动态规划的解题思路
db[i][j]=db[i-1][j]&&(s3[i+j-1]==s1[i-1])||db[i][j-1]&&(s3[i+j-1]==s2[j-1]);
For example,
Given:
s1 =
"aabcc",
s2 =
"dbbca",
When s3 =
"aadbbcbcac", return true.
When s3 =
"aadbbbaccc", return false.
判断目标字符串是否由两个原字符串字符交叉构成
动态规划的解题思路
db[i][j]=db[i-1][j]&&(s3[i+j-1]==s1[i-1])||db[i][j-1]&&(s3[i+j-1]==s2[j-1]);
class Solution { public: bool isInterleave(string s1, string s2, string s3) { int len1 = s1.length(); int len2 = s2.length(); int len3 = s3.length(); if(len1==0&&len2==0&&len3==0) return true; if(len3>len2+len1) return false; vector<vector<bool> > db(len1+1,vector<bool>(len2+1,false)); db[0][0]=true; for(int i=1;i<=len1;i++) db[i][0]=db[i-1][0]&&(s3[i-1]==s1[i-1]); for(int i=1;i<=len2;i++) db[0][i]=db[0][i-1]&&(s3[i-1]==s2[i-1]); for(int i=1;i<=len1;i++) for(int j=1;j<=len2;j++) db[i][j]=db[i-1][j]&&(s3[i+j-1]==s1[i-1])||db[i][j-1]&&(s3[i+j-1]==s2[j-1]); return db[len1][len2]; } };
相关文章推荐
- leetcode_question_97 Interleaving String
- 97. Interleaving String
- LeetCode-97-Interleaving String DP 记忆化搜索
- 97. Interleaving String
- LeetCode 97 Interleaving String
- 97.Interleaving String
- 97. Interleaving String
- leetcode 97: Interleaving String
- [leetcode-97]Interleaving String(java)
- FTPrep, 97 Interleaving String
- 97/100 Interleaving String/Same Tree
- 97. Interleaving String
- 【leetcode】String——Interleaving String(97)
- [leetcode 97]Interleaving String
- [leetcode] 97 Interleaving String
- 97. Interleaving String
- 【LeetCode】【97】Interleaving String
- leetCode 97:Interleaving String
- LeetCode[97]::Interleaving String C++
- 97. Interleaving String