交错字符串
题目链接: https://leetcode.cn/problems/interleaving-string/
解题思路:
由题意可知,s3是由s1和s2交错组成的,则可得s3 的前i+j个字符是由s1[:i]+s2[:j]交错组成的
若s3的长度不是s1和s2的长度之和可以直接返回false
若有一项为空,则判断另一项和最终字符串是否一致即可
设定二维数组dp[i][j],代表s1的前i个字符和s2的前j个字符能否构成s3的前i+j个字符
dp[i][0]表示s1的前i个字符能否构成s3的前i个字符
dp[0][j]表示s3的前j个字符能否构成s3的前j个字符
注意下标及边界,前i个字符串的下标为[0,i-1]
dp[i][j]=((dp[i][j-1]&&s2[j-1]==s3[i+j-1])||(dp[i-1][j]&&s1[i-1]==s3[i+j-1]))
复杂度分析
时间复杂度: 时间复杂度是 ,其中 是字符串
s1
的长度,其中 是字符串s2
的长度空间复杂度: 空间复杂度是 ,我们需要一个l1*l2二维数组存储每个位置的状态。
最后更新于