給出三個字串:s1、s2、s3,判斷s3是否由s1和s2交叉構成。
樣例
比如 s1 ="aabcc"s2 ="dbbca"
- 當 s3 ="aadbbcbcac",返回 true.
- 當 s3 ="aadbbbaccc", 返回 false.
dp[i][j][k] 代表 當到了s3的第i位時,s1的到了第j位 s2到了第k位。 因為i是一直向前迴圈的 且 只用到i-1 所以可以省去第一維陣列 又因為 i == k+j 所以可以省第三層迴圈 最終時間複雜度 空間複雜度都為 o(n^2)
1 #include 23using
namespace
std;45
class
solution
2627
if(k > 0 && s3[i-1] == s2[k-1
])3031}
32}33return dp[s1.length()][s2.length()] == 1;34
}35};36
37int
main()
交叉字串 LintCode
給出三個字串 s1 s2 s3,判斷s3是否由s1和s2交叉構成。樣例 比如 s1 aabcc s2 dbbca 當 s3 aadbbcbcac 返回 true.當 s3 aadbbbaccc 返回 false.挑戰 要求時間複雜度為o n 2 或者更好 思路 先考慮特殊情況,s1為空直接比較s2和...
交叉字串 佇列
給出三個佇列 s1,s2,s3 判斷 s3 是否是由 s1 和 s2 交叉得來。如 s1 為 aabcc s2 為 dbbca。當 s3 為 aadbbcbcac 時,返回 true 即將 s1 拆成三部分 aa,bc,c 分別插入 s2 對應位置 否則返回 false。aabcc,dbbca,aa...
動態規劃 字串交叉問題
給出三個佇列 s1,s2,s3 判斷 s3 是否是由 s1 和 s2 交叉得來。如 s1 為 aabcc s2 為 dbbca。當 s3 為 aadbbcbcac 時,返回 true 即將 s1 拆成三部分 aa,bc,c 分別插入 s2 對應位置 否則返回 false。aabcc,dbbca,aa...