码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode – Refresh – Interleaving String

时间:2015-03-20 06:54:54      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

Notes:

1. Even s3 is empty string, if s1 and s2 are emtpy, then it should be true.

2. Do not mess up the size of label.

 1 class Solution {
 2 public:
 3     bool isInterleave(string s1, string s2, string s3) {
 4         int l1 = s1.size(), l2 = s2.size(), l3 = s3.size();
 5         if (l3 != l2 + l1) return false;
 6         vector<vector<bool> > dp(l1+1, vector<bool> (l2+1, false));
 7         dp[0][0] = true;
 8         for (int i = 1; i <= l1; i++) dp[i][0] = dp[i-1][0] && s1[i-1] == s3[i-1];
 9         for (int i = 1; i <= l2; i++) dp[0][i] = dp[0][i-1] && s2[i-1] == s3[i-1];
10         for (int i = 1; i <= l1; i++) {
11             for (int j = 1; j <= l2; j++) {
12                 dp[i][j] = ((dp[i-1][j] && s1[i-1] == s3[i+j-1]) ||
13                             (dp[i][j-1] && s2[j-1] == s3[i+j-1]) ||
14                             (dp[i-1][j-1] && s1[i-1] == s3[i+j-1] && s2[j-1] == s3[i+j-2]) ||
15                             (dp[i-1][j-1] && s1[i-1] == s3[i+j-2] && s2[j-1] == s3[i+j-1]));
16             }
17         }
18         return dp[l1][l2];
19     }
20 };

 

LeetCode – Refresh – Interleaving String

标签:

原文地址:http://www.cnblogs.com/shuashuashua/p/4352623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!