97. Interleaving String (String; DP)
2015-10-29 08:25
435 查看
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.
思路:将最终要求的是否能够interleave作为状态;怎么样能被interleave呢?答案是s3的每个字符,从头开始到该字符能被s1的前i个字符及s2的前j个字符表示,所以状态是个二维数组。
For example,
Given:
s1 = "aabcc",
s2 = "dbbca",
When s3 = "aadbbcbcac", return true.
When s3 = "aadbbbaccc", return false.
思路:将最终要求的是否能够interleave作为状态;怎么样能被interleave呢?答案是s3的每个字符,从头开始到该字符能被s1的前i个字符及s2的前j个字符表示,所以状态是个二维数组。
class Solution { public: bool isInterleave(string s1, string s2, string s3) { if(s1.empty()) { if(s2 == s3) return true; else return false; } else if(s2.empty()) { if(s1==s3) return true; else return false; } int l1 = s1.length(); int l2 = s2.length(); int l3 = s3.length(); if(l3!=l1+l2) return false; bool** hit = new bool* [l1+1]; //状态hit[i][j]表示s3[i+j-1]由s1的前i个字符和s2的前j个字符组成 for(int i = 0; i<=l1; i++) { hit[i] = new bool [l2+1]; } //initialize state hit[0][0] = true; for ( int i = 1; i<=l1; i++) { if(s1[i-1] == s3[i-1]) { hit[i][0] = true; } else { for(int j = i; j <= l1; j++){ hit[j][0] = false; } break; } } for ( int i = 1; i<=l2; i++) { if(s2[i-1] == s3[i-1]) { hit[0][i] = true; } else { for(int j = i; j <= l2; j++){ hit[0][j] = false; } break; } } //状态转移 for ( int i = 1; i<=l1; i++) { for( int j = 1; j<=l2; j++) { if(s1[i-1]==s3[i+j-1]) { hit[i][j] = hit[i-1][j]; } if(s2[j-1]==s3[i+j-1]) { hit[i][j] = hit[i][j-1] || hit[i][j]; } } } return hit[l1][l2]; } };
相关文章推荐
- HelloWorld工程中工程文件和目录结构
- 如何禁止win10系统驱动程序强制更新的问题
- iOS开发: AFNetworking网络请求:NSURLSession版
- TCP、UDP
- 【C/C++学院】0822-类型转换函数与构造转换函数/类的继承/类的继承以及区别/继承静态成员与静态函数//继承实现代码重用/单继承QT案例/多继承简介以及实战/Gpu编程
- win10 Build 10565中Edge浏览器新增对HTML5视频的播放控制及下载
- java 不可变类 缓存实例
- hdu 1013
- 创建cocos2dx项目
- java 实现WebService 以及不同的调用方式
- hibernate学习心得(二)
- 逐次逼近比较型adc原理
- C位运算
- 5.3 Flip Bit to Win
- 【codevs3223】素数密度 埃氏筛法
- Win10 Mobile 10581预览版升级界面曝光 上手视频观赏
- 规划环评是生态文明理念的践行
- 栈
- Android 中关于 【Cursor】 类的介绍
- Xsocks 反弹代理s5