LeetCode-97.Interleaving String
来源:互联网 发布:diy美工刀架 编辑:程序博客网 时间:2024/05/23 14:22
https://leetcode.com/problems/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.
bool isInterleave(string s1, string s2, string s3) { int i, j, len1 = s1.size(), len2 = s2.size(); if (s3.size() != len1 + len2) return false; vector<vector<bool>> f(1 + len1, vector<bool>(1 + len2, true)); for (i = 1; i <= len1; ++i) f[i][0] = f[i - 1][0] && s1[i - 1] == s3[i - 1]; for (i = 1; i <= len2; ++i) f[0][i] = f[0][i - 1] && s2[i - 1] == s3[i - 1]; bool ss1, ss2; for (i = 1; i <= len1; ++i) { for (j = 1; j <= len2; ++j) { ss1 = f[i - 1][j] && s1[i - 1] == s3[i + j - 1]; ss2 = f[i][j - 1] && s2[j - 1] == s3[i + j - 1]; f[i][j] = ss1 || ss2; } } return f[len1][len2]; }
转移方程:
ss1 = f[i - 1][j] && s1[i - 1] == s3[i + j - 1];ss2 = f[i][j - 1] && s2[j - 1] == s3[i + j - 1];f[i][j] = ss1 || ss2;
f[i][j]表示s1的前i个字符和s2的前j个字符是否能交叉构成s3的前 i+j 个字符
参考:
http://www.kancloud.cn/kancloud/data-structure-and-algorithm-notes/73085
空间优化:
参考:http://blog.csdn.net/linhuanmars/article/details/24683159
bool isInterleave(string s1, string s2, string s3){int i, j, len1 = s1.size(), len2 = s2.size();if (s3.size() != len1 + len2)return false;if (len1 > len2){string s = s1;s1 = s2;s2 = s;int len = len1;len1 = len2;len2 = len;}vector<bool> res(len1 + 1, false);res[0] = true;for (int i = 0; i<len1; i++)res[i + 1] = res[i] && s1[i] == s3[i];bool ss1, ss2;for (int i = 0; i<len2; i++){res[0] = res[0] && s2[i] == s3[i];for (int j = 0; j<len1; j++){ss1 = res[j + 1] && s2[i] == s3[i + j + 1];ss2 = res[j] && s1[j] == s3[i + j + 1];res[j + 1] = ss1 || ss2;}}return res[len1];}
0 0
- LeetCode 97. Interleaving String
- [LeetCode]97.Interleaving String
- [Leetcode] 97. Interleaving String
- LeetCode --- 97. Interleaving String
- [leetcode] 97.Interleaving String
- [leetcode] 97.Interleaving String
- leetcode 97. Interleaving String
- Leetcode - 97.Interleaving String
- leetcode 97. Interleaving String
- LeetCode 97. Interleaving String
- LeetCode 97. Interleaving String
- Leetcode:97. Interleaving String
- Leetcode 97. Interleaving String
- [leetcode] 97. Interleaving String
- LeetCode-97.Interleaving String
- [LeetCode] 97. Interleaving String
- leetcode 97.Interleaving String
- 97. Interleaving String ,leetcode
- 菲波拉契数列的通项公式
- POJ 2155 (二维树状数组)
- hadoop面试百题
- mybaties 映射注解 详情
- 测试用例设计综合策略
- LeetCode-97.Interleaving String
- deeplearning论文学习笔记(1)Convolutional Neural Networks for Sentence Classification
- isKindOfClass 与 isMemberOfClass的区别
- wm8976的初始化函数、写寄存器函数和音量控制函数分析
- rror LNK2001: unresolved external symbol _cvExtractSURF
- 几个常见的DP问题及解法
- vps搭建vpn
- Logistic回归
- 使用数组实现栈