LeetCode刷题-97. 交错字符串
题目链接:97. 交错字符串
¶题解:
简单动态规划!
¶题目简述:
给定三个字符串,前两个字符串能否组成第三个字符串!
¶题解:
动态规划:
状态表示: 两个字符串,使用二维数组f[i][j]
,s1
串的前i
个字符串和s2
串的前j
个字符能否构成s3
串的前i + j
个字符!
**状态计算:**同样的套路,只考虑最后一步,即能交错形成的条件:
- 当
s1[i] == s3[i + j]
时:s1
串的前i - 1
个和s2
的前j
个匹配 - 当
s2[j] == s3[i + j]
时:s1
串的前i
个和s2
的前j - 1
个匹配
综上所述: 状态转移方程为:f[i][j] = f[i - 1][j] || f[i][j - 1]
初始转态: f[0][0] == true
同样取决于能否将所有状态全部计算对!不解释了!
最终结果: f[n][m]
时间复杂度:O(n^2)
¶AC代码:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小牛博客!
评论