【ALGO】Leetcode 97.交錯字串
題面
原題連結
給定三個字串 s1、s2、s3,請你幫忙驗證 s3 是否是由 s1 和 s2 交錯 組成的。
兩個字串 s 和 t 交錯 的定義與過程如下,其中每個字串都會被分割成若干 非空 子字串:
s = s1 + s2 + … + sn
t = t1 + t2 + … + tm
|n - m| <= 1
交錯 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …
提示:a + b 意味著字串 a 和 b 連線。
解析
使用DP
求解,令
f
[
i
]
[
j
]
f[i][j]
f[i][j]表示所有由
s
1
[
1
∼
i
]
s1[1\sim i]
s1[1∼i]和
s
2
[
1
∼
j
]
s2[1\sim j]
s2[1∼j]交錯形成
s
3
[
1
∼
i
+
j
]
s3[1\sim i+j]
s3[1∼i+j]的方案,狀態計算時關鍵判斷
s
3
[
i
+
j
]
s3[i+j]
s3[i+j]的字元的來源為
s
1
s1
s1還是
s
2
s2
s2
AC程式碼
class Solution {
public:
bool isInterleave(string s1, string s2, string s3) {
int n=s1.size(), m=s2.size();
if(s3.size()!=n+m) return false;
bool f[n+1][m+1];
memset(f, 0x00, sizeof f);
s1=' '+s1, s2=' '+s2, s3=' '+s3;
for(int i=0; i<=n; ++i)
for(int j=0; j<=m; ++j)
if(!i && !j) f[i][j]=true;
else{
if(i && s1[i]==s3[i+j]) f[i][j]=f[i-1][j];
if(j && s2[j]==s3[i+j]) f[i][j]|=f[i][j-1];
}
return f[n][m];
}
};
相關文章
- LeetCode-097-交錯字串LeetCode字串
- 【ALGO】Leetcode 85.最大矩形GoLeetCode
- 【ALGO】Leetcode 91.解碼方法GoLeetCode
- 【ALGO】Leetcode 98.驗證二叉搜尋樹GoLeetCode
- leetcode:字串相乘(java)LeetCode字串Java
- LeetCode 394 字串解碼LeetCode字串
- LeetCode-415-字串相加LeetCode字串
- LeetCode-043-字串相乘LeetCode字串
- leetcode 87 擾亂字串LeetCode字串
- LeetCode 567. 字串的排列LeetCode字串
- [Leetcode]394.字串解碼LeetCode字串
- LeetCode初級-反轉字串LeetCode字串
- 【LeetCode】796. 旋轉字串LeetCode字串
- LeetCode-344-反轉字串LeetCode字串
- LeetCode 205. 同構字串LeetCode字串
- 【LeetCode】初級演算法:字串LeetCode演算法字串
- LeetCode-824. Goat Latin(字串分割)LeetCodeGo字串
- vue的列表交錯過渡Vue
- leetcode 1525 字串的好分割數目(雜湊表,字串分割)LeetCode字串
- LeetCode-8. 字串轉整數 (atoi)LeetCode字串
- [leetcode 87 擾亂字串] [剪枝搜尋]LeetCode字串
- LeetCode-459-重複的子字串LeetCode字串
- 每日一道Leetcode——上升下降字串LeetCode字串
- 「翻轉字串」python之leetcode刷題|004字串PythonLeetCode
- 【LeetCode】1417. 重新格式化字串(Java)LeetCode字串Java
- 【leetcode】28. Implement strStr() 字串匹配KMP BMLeetCode字串匹配KMP
- Q34 LeetCode344 反轉字串LeetCode字串
- LeetCode-434-字串中的單詞數LeetCode字串
- CSS文字交錯滑動效果-001CSS
- leetcode344 反轉字串 c++實現LeetCode字串C++
- LeetCode 5.最長的迴文字串LeetCode字串
- 【leetcode 簡單】 第一百零六題 壓縮字串LeetCode字串
- Leetcode 893. 特殊等價字串組 python 版本LeetCode字串Python
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- LeetCode-151-翻轉字串裡的單詞LeetCode字串
- LeetCode-345-反轉字串中的母音字母LeetCode字串
- 【Leetcode每日筆記】205. 同構字串(Python)LeetCode筆記字串Python
- LeetCode題解(1668):最大重複子字串(Python)LeetCode字串Python