LeetCode: Interleaving String
2013-04-01 14:53
465 查看
第一次dfs, 没过large, 马上想到dp, 一次过了
C#
View Code
class Solution { public: bool isInterleave(string s1, string s2, string s3) { // Start typing your C/C++ solution below // DO NOT write int main() function if (s3.size() != s1.size()+s2.size()) return false; int m = s1.size(); int n = s2.size(); vector<vector<bool>> f(m+1, vector<bool>(n+1)); f[0][0] = true; for (int i = 1; i <= m; i++) { f[i][0] = s1[i-1] == s3[i-1]? f[i-1][0]:false; } for (int i = 1; i <= n; i++) { f[0][i] = s2[i-1] == s3[i-1]? f[0][i-1]:false; } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { f[i][j] = (f[i-1][j] && s1[i-1] == s3[i+j-1]) || (f[i][j-1] && s2[j-1] == s3[i+j-1]); } } return f[m] ; } };
C#
public class Solution { public bool IsInterleave(string s1, string s2, string s3) { if (s3.Length != s1.Length + s2.Length) return false; bool[,] f = new bool[s1.Length+1, s2.Length+1]; f[0, 0] = true; for (int i = 1; i <= s1.Length; i++) { f[i, 0] = s1[i-1] == s3[i-1]? f[i-1, 0] : false; } for (int i = 1; i <= s2.Length; i++) { f[0, i] = s2[i-1] == s3[i-1]? f[0, i-1] : false; } for (int i = 1; i <= s1.Length; i++) { for (int j = 1; j <= s2.Length; j++) { f[i, j] = (f[i-1, j] && s1[i-1] == s3[i+j-1]) || (f[i, j-1] && s2[j-1] == s3[i+j-1]); } } return f[s1.Length, s2.Length]; } }
View Code
相关文章推荐
- Interleaving String leetcode
- [leetcode] 97 Interleaving String
- LeetCode Interleaving String
- LeetCode题解:Interleaving String
- leetcode:Interleaving String
- Interleaving String - Leetcode
- [LeetCode] Interleaving String
- leetcode--Interleaving String
- leetcode 97. Interleaving String
- [LeetCode] Interleaving String
- LeetCode Interleaving String DP
- Leetcode 97. Interleaving String
- LeetCode Interleaving String
- LeetCode097 Interleaving String
- leetcode Interleaving String
- 【LeetCode】Interleaving String
- 【leetcode刷题笔记】Interleaving String
- [LeetCode.DP]Interleaving String
- LeetCode Interleaving String
- leetcode[97] Interleaving String