97. 交錯字串. dp
阿新 • • 發佈:2020-07-21
給定三個字串 s1, s2, s3, 驗證 s3 是否是由 s1 和 s2 交錯組成的。
示例 1:
輸入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
輸出:true
示例 2:
輸入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
輸出:false
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/interleaving-string
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
class Solution { public: bool isInterleave(string s1, string s2, string s3) { int n = s1.size(); int m = s2.size(); int t = s3.size(); //dp[i][j] : s1的前i個與s2的前j個字元能否構成s3的前i+j vector <vector<int>> dp = vector (n + 1, vector<int> (m + 1, false)); if (n + m != t) return false; dp[0][0] = true; for (int i = 0; i <= n; i++) { for (int j = 0; j <= m; j++) { int p = i + j - 1; if (i > 0) { dp[i][j] |= dp[i - 1][j] && s1[i -1] == s3[p]; } if (j > 0) { dp[i][j] |= dp[i][j - 1] && s2[j - 1] == s3[p]; } } } return dp[n][m]; } };