交叉字串

2022-05-28 01:06:10 字數 645 閱讀 2406

給出三個字串: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 2

3using

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...