leetcode Interleaving String
来源:互联网 发布:重装系统提示网络电缆 编辑:程序博客网 时间:2024/06/14 17:32
Interleaving String
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.
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.
给定两个数组 s1 s2 还有第三个数组s3 问用s1 s2 能否组成s3 利用一个二维数组m[i][j]存储 s1[0..i-1] s2[0..j-1]是否能构成s3[0..i+j-1]
m[i][j]=true 当且仅当 m[i][j-1]&&s2[j-1]==s3[len-1] 或者m[i-1][j]&&s1[i-1]==s3[len-1] len=i+j
class Solution {public: bool isInterleave(string s1, string s2, string s3) { int ss1=s1.size(); int ss2=s2.size(); int ss3=s3.size(); if(ss1==0)return s2==s3; if(ss2==0)return s1==s3; if(ss3!=ss1+ss2)return false; bool m[ss1+1][ss2+1]; memset(m,false,(ss1+1)*(ss2+1)); m[0][0]=true; for(int i=0;i<ss1&&i<ss3;i++){ if(s1[i]==s3[i]){ m[i+1][0]=true;}else{break;}}for(int i=0;i<ss2&&i<ss3;i++){ if(s2[i]==s3[i]){ m[0][i+1]=true;}else{break;}}bool valid=false;for(int len=2;len<=ss3;len++){valid=false;if(len<=ss1&&m[len][0]||len<=ss2&&m[0][len]){valid=true;}//len:1~ss3//len:ss1+ss2 ss1:[0 ss1] s1[ss1-1]int minlen=max(1,len-ss2);for(int i=minlen;i<len&&i<=ss1;i++){int j=len-i;if(j>=ss2)if(m[i][j-1]&&s2[j-1]==s3[len-1]){valid=true;m[i][j]=true;//有一条通路可以到达m[i][j]即可continue;}if(m[i-1][j]&&s1[i-1]==s3[len-1]){valid=true;m[i][j]=true;continue;}}if(!valid){return false;}}return true; }};
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
- mybatis jdbcType: DATE & TIMESTAMP
- 医学图像处理开源软件包
- 欢迎使用CSDN-markdown编辑器
- [LeetCode]Longest Substring Without Repeating Characters
- 七牛上传的响应处理大全
- leetcode Interleaving String
- 判断*.xls文件单元格数据类型方法封装
- Libxml2库的编译和使用
- sublime text2编写html时如何快速地在指定浏览器中预览
- 配置minicom
- 有时候人活着就是累
- Android多媒体开发【10】-- android中OpenMax的实现【1】整体框架
- 几个有意思的运维编程题
- sicily 1240. Faulty Odometer