Leetcode-97.交错字符串
给定三个字符串 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法1:动态规划
1.dp[i][j]表示s1的前i个字符与s2的前j个字符能否组成s3的前i+j个字符串
2.初始化
对于第1列即s2为空dp[i][0]=dp[i-1][0]&&(s1[i-1]==s3[i-1]);
对于第1行即s1为空dp[0][i]=dp[0][i-1]&&(s2[i-1]==s3[i-1]);
3.状态转移方程
两种情况
(1)要么是s1[i-1]与s3[i-1+j]结合dp[i][j]=dp[i-1][j]&&(s1[i-1]==s3[i-1+j])
(2)要么是s2[j-1]与s3[i+j-1]结合dp[i][j]=dp[i][j-1]&&(s2[j-1]==s3[i+j-1])
4.返回dp[n][m]
1 | class Solution { |