交错字符串
解题思路:
func isInterleave(s1 string, s2 string, s3 string) bool {
l1, l2, l3 := len(s1), len(s2), len(s3)
if l1==0 && l2==0 &&l3==0 {
return true
}
if (l1 == 0 && s2!=s3) ||(l2==0 && s1!=s3){
return false
}
if l3 != l1+l2 {
return false
}
dp := make([][]bool, l1+1)
for i := 0; i < l1+1; i++ {
dp[i] = make([]bool, l2+1)
}
for i := 1; i < l1+1; i++ {
if s1[:i] == s3[:i] {
dp[i][0] = true
}else{
break
}
}
for j := 1; j < l2+1; j++ {
if s2[:j] == s3[:j] {
dp[0][j] = true
}else{
break
}
}
for i:=1;i<l1+1;i++{
for j:=1;j<l2+1;j++{
if (dp[i][j-1]&&s2[j-1]==s3[i+j-1])||(dp[i-1][j]&&s1[i-1]==s3[i+j-1]){
dp[i][j]=true
}
}
}
return dp[l1][l2]
}复杂度分析
最后更新于