interleaving string
来源:互联网 发布:minecraft 源码 unity 编辑:程序博客网 时间:2024/06/06 12:41
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.
定义状态f(i,j)为s1[0,i],s2[0,j] 匹配s3[0,i+j]
当s1[0,i]的最后一个字符等于s3[0,i+j]的最后一个字符时,f(i,j)=f(i-1,j)当s2[0,j]的最后一个字符等于s3[0,i+j]的最后一个字符时,f(i,j)=f(i,j-1)
可以将f(i,j)表示成二维动态组(bool类型)
//二维动态数组 class Solution {public: bool isInterleave(string s1, string s2, string s3) { if(s3.length()!=s1.length()+s2.length()) return false; vector<vector<bool>>f(s1.length()+1,vector<bool>(s2.length()+1,true)); for(size_t i=1;i<=s1.length();i++) { f[i][0]=(s1[i-1]==s3[i-1])&&(f[i-1][0]); } for(size_t i=1;i<=s2.length();i++) { f[0][i]=(s2[i-1]==s3[i-1])&&(f[0][i-1]); } for(size_t i=1;i<=s1.length();i++) { for(size_t j=1;j<=s2.length();j++) { f[i][j]=((s1[i-1]==s3[i+j-1])&&(f[i-1][j]))||((s2[j-1]==s3[i+j-1])&&(f[i][j-1])); } } return f[s1.length()][s2.length()]; }};
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
- Ubuntu VSFTP的配置方法
- JSP中 Session和作用域的使用
- LeetCode *** 168. Excel Sheet Column Title
- java中复制数组的几种方式
- 【剑指offer系列】 丑数___34
- interleaving string
- 编写新闻客户端&网络编程day1(66期第四天)
- Vulkan Render Pass
- stash的hooks和api
- ios拨打电话
- 排序问题-希尔排序
- 第6周项目1-分数类的雏形(1)
- LeetCode 13 -Roman to Integer ( JAVA )
- curl模拟浏览器请求