Interleaving String
来源:互联网 发布:广州市淘宝客服招聘 编辑:程序博客网 时间:2024/05/02 21:45
这种问题一看就是典型的动态规划问题,但是不好做啊。
s1 = a1 a2 ... ai
s2 = b1 b2 ... bj
s3 = c1 c2 ... c(i + j)
下面进行考察,
- 如果ai == c(i + j),那么问题变为考察a1 a2 ... a(i - 1),b1 b2 ... bj,c1 c2 ... c(i + j - 1)是否匹配;
- 如果bj == c(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>> match(s1.length() + 1, vector<bool>(s2.length() + 1, false));match[0][0] = true;for (int j = 1; j <= s2.length(); ++j) {if (s2[j - 1] == s3[j - 1])match[0][j] = match[0][j - 1];elsematch[0][j] = false;}for (int i = 1; i <= s1.length(); ++i) {if (s1[i - 1] == s3[i - 1])match[i][0] = match[i - 1][0];elsematch[i][0] = false;}for (int i = 1; i <= s1.length(); ++i) for (int j = 1; j <= s2.length(); ++j) { if (s3[i + j - 1] != s1[i - 1] && s3[i + j - 1] != s2[j - 1]) { match[i][j] = false; continue; } if (s3[i + j - 1] == s1[i - 1]) match[i][j] = match[i][j] || match[i - 1][j]; if (s3[i + j - 1] == s2[j - 1]) match[i][j] = match[i][j] || match[i][j - 1]; }return match[s1.length()][s2.length()];}};
http://oj.leetcode.com/problems/interleaving-string/
0 0
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- Interleaving String
- 怎样测试程序的平均性能
- The APR based Apache Tomcat Native library which allows optimal performance
- 告别码农,成为真正的程序员
- discuz免激活同步登入代码修改方法(discuz同步登录)
- 我的第一次UML学习和实践(下)
- Interleaving String
- [零基础学软件开发9]选择结构if语句介绍之2
- ORACLE存储过程调用存储过程时commit的问题
- Windows平台下Qt5.1 for Android的安卓开发环境
- Webservice中Global.asax文件的Application_Start不能触发
- 253路公交车今起上岗 从大寨路开往西北武术院
- adb server is out of date
- JPA主键生成器和主键生成策略
- chatofpomelo源码分析(二)——聊天