func isInterleave(s1 string, s2 string, s3 string) bool {
m, n := len(s1), len(s2)
if m+n != len(s3) {
return false
}
f := make([]bool, n+1)
f[0] = true
for i := 0; i <= m; i++ {
for j := 0; j <= n; j++ {
k := i + j - 1
if i > 0 {
f[j] = (f[j] && s1[i-1] == s3[k])
}
if j > 0 {
f[j] = (f[j] || (s2[j-1] == s3[k] && f[j-1]))
}
}
}
return f[n]
}