[leetcode] Interleaving String
来源:互联网 发布:数学系的学不学编程 编辑:程序博客网 时间:2024/04/18 18:53
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,设立一个数组dp[0][0],dp[i][j],表示的是s3能被长度为i的s1和长度为j的s2交替迭代组成,那么当s3[i+j-1]=s1[i-1]的时候dp[i][j]=dp[i-1][j],当s3[i+j-1]=s2[j-1]的时候dp[i][j]=dp[i][j-1]
代码:
class Solution {public: bool isInterleave(string s1, string s2, string s3) { int len1=s1.size(),len2=s2.size(),len3=s3.size(); if(len1+len2!=len3) return false; if(s1+s2==s3) return true; bool dp[1000][1000]; dp[0][0]=true; for(int i=1;i<=len1;i++){ dp[i][0]=(dp[i-1][0] && s3[i-1]==s1[i-1]); } for(int j=1;j<=len2;j++){ dp[0][j]=(dp[0][j-1] && s3[j-1]==s2[j-1]); } for(int i=1;i<=len1;i++){ for(int j=1;j<=len2;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[len1][len2]; }};
0 0
- LeetCode: Interleaving String
- LeetCode Interleaving String
- LeetCode: Interleaving String
- [Leetcode] Interleaving String
- [LeetCode] Interleaving String
- leetcode 68: Interleaving String
- [Leetcode] Interleaving String
- LeetCode - Interleaving String
- [LeetCode]Interleaving String
- LeetCode: Interleaving String
- Leetcode: Interleaving String
- [Leetcode]Interleaving String
- Leetcode: Interleaving String
- LeetCode:Interleaving String
- LeetCode-Interleaving String
- [leetcode] Interleaving String@DP
- LeetCode:Interleaving String
- LeetCode - Interleaving String
- 摄像头像素和帧数的骗局­
- python实现批量下载贴吧图片
- ORACLE 11G用于有效期
- mybatis实战教程(mybatis in action)之一:开发环境搭建
- 多个列表切换使用同一个listview,切换时回到各个列表之前的位置
- [leetcode] Interleaving String
- Composite 设计模式
- 纯JS实现的3D标签云,不依赖任何第三方库,支持移动页面
- 解决clearsilver 渲染cs_render慢
- c#做端口转发程序支持正向连接和反向链接
- android经过POST和GET两种方式发送数据到web应用实战
- 最大公约数
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- Centos 下 mount 共享文件夹,并分配权限给指定用户