interleaving-string
来源:互联网 发布:js判断哪个tr被双击 编辑:程序博客网 时间:2024/05/19 17:23
题目:
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.
程序:
递归(超时)
class Solution {public: bool isInterleave(string s1, string s2, string s3) { if ((s1.size() + s2.size()) != s3.size()) return false; bool flag = false; solve(s1, s2, s3,flag); return flag; } void solve(string s1, string s2, string s3,bool &flag) { if (s3.size() == 0 && s1.size() == 0 && s2.size() == 0) { flag=true; return; } if (s1.size() == 0) { if (s2 == s3) { flag = true; return; } else { return; } } if (s2.size() == 0) { if (s1 == s3) { flag = true; return; } else { return; } } if (s1[0] == s3[0]) solve(s1.substr(1), s2, s3.substr(1),flag); if (s2[0] == s3[0]) solve(s1, s2.substr(1), s3.substr(1),flag); }};
方法二:
动态规划
class Solution {public: // dp[i][j] 使用s1[0,1,...,i]字符串和s2[0,1,2,...,j]字符串,组合成s3(i+j) bool isInterleave(string s1, string s2, string s3) { int m=s1.length(),n=s2.length(),l=s3.length(); if(m+n != l) return false; vector<vector<bool> > dp(m+1,vector<bool>(n+1,false)); dp[0][0] = true; for(int i=1;i<=m;i++) dp[i][0] = dp[i-1][0] && s1[i-1] == s3[i-1]; for(int j=1;j<=n;j++) dp[0][j] = dp[0][j-1] && s2[j-1] == s3[j-1]; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { dp[i][j] = (dp[i-1][j] && s1[i-1] == s3[i+j-1]) || (dp[i][j-1] && s2[j-1] == s3[i+j-1]); } } return dp[m][n]; }};
阅读全文
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
- 坦克小作战 js版(未完工)
- 7-29 修理牧场(25 分)
- 进制的转换
- 内核空间与用户空间的通信方式
- js比较器组件Comparator.js
- interleaving-string
- Python初学笔记-io流和异常
- Dragon of Loowater UVA
- 自练题20170801
- 关于add(2)(3)(4)的记录
- codeforces 812E
- 蓝桥杯 数列排序
- JAVA_Web知识体系(浅入浅出)
- hihocoder1586-2017acm北京网络赛9&线段树&思维&板子- Minimum