题目:

Given three strings: s1s2s3, determine whether s3 is formed by the interleaving of s1 and s2.

Example

For s1 = "aabcc", s2 = "dbbca"

  • When s3 = "aadbbcbcac", return true.
  • When s3 = "aadbbbaccc", return false.

题解:

Solution 1 ()

class Solution {
public:
bool isInterleave(string s1, string s2, string s3) {
int n1 = s1.size(), n2 = s2.size(), n3 = s3.size();
if (n1 + n2 != n3) {
return false;
}
vector<vector<int>> dp(n1 + , vector<int>(n2 + , false));
dp[][] = true;
for (int i = ; i <= n1; ++i) {
dp[i][] = dp[i - ][] && (s1[i - ] == s3[i - ]);
}
for (int i = ; i <= n2; ++i) {
dp[][i] = dp[][i - ] && (s2[i - ] == s3[i - ]);
}
for (int i = ; i <= n1; ++i) {
for (int j = ; j <= n2; ++j) {
dp[i][j] = (dp[i - ][j] && s1[i - ] == s3[i - + j]) || (dp[i][j - ] && s2[j - ] == s3[j - + i]);
}
}
return dp[n1][n2];
}
};

Solution  2 ()

class Solution {
public:
bool isInterleave(string s1, string s2, string s3) {
if(s1.length() + s2.length() != s3.length())
return false;
bool dp[s2.length() + ];
for(int i = ; i <= s1.length(); i++){
for(int j = ; j <= s2.length(); j++){
if(i == && j == )
dp[j] = true;
else if(i == )
dp[j] = (dp[j - ] && s3[i + j - ] == s2[j - ]);
else if(j == )
dp[j] = (dp[j] && s3[i + j - ] == s1[i - ]);
else
dp[j] = (dp[j] && s3[i + j - ] == s1[i - ]) || (dp[j - ] && s3[i + j - ] == s2[j - ]);
}
}
return dp[s2.length()];
}
};

  DFS

Solution 3 ()

  BFS

Solution 4 ()

最新文章

  1. 数据存储_SQLite (2)
  2. spring mvc 请求转发和重定向(转)
  3. HDU 2014
  4. Java连接mysql数据库
  5. 【6_100】Same Tree
  6. 小白学习mysql之索引初步
  7. XML基础概念
  8. jQuery checkBox 全选的例子
  9. php中的require() 语句的使用方法
  10. Ubuntu nfs 配置
  11. java面试题集2
  12. adbetj657k
  13. 项目中 添加 swift代码 真机调试 错误
  14. 201521123008《Java程序设计》第10周学习总结
  15. .NET在VS2008中生成DLL并调用
  16. BZOJ_1705_[Usaco2007 Nov]Telephone Wire 架设电话线_DP
  17. BZOJ5341[Ctsc2018]暴力写挂——边分治+虚树+树形DP
  18. Java作业二(2017-9-18)
  19. Optaplanner规划引擎的工作原理及简单示例(2)
  20. C#实现向excel中插入行列,以及设置单元格合并居中效果

热门文章

  1. ui-router $transitions 用法
  2. JQuery的一些思想,自己的一些见解!!!!
  3. go的timer定时器实现
  4. 1213 - Deadlock found when trying to get lock; try restarting transaction
  5. HDU 1452 Happy 2004(唯一分解定理)
  6. 【BZOJ】1003 Cards
  7. java常用的基础容器
  8. 性能测试--Jmeter录制、回放
  9. Wix Burn:如何将32位和64位的安装包制作成一个安装包
  10. python仪表盘