注意理解本题
str1 , str2 交错组成的 aim 字符串
等价于 str1 按照顺序在aim 出现 && str1 按照顺序在aim 中出现
时间复杂度:O(N+M)
空间复杂度:O(1)
package main import ( "fmt" ) func main(){ var str1,str2,aim string fmt.Scanf("%s",&str1) fmt.Scanf("%s",&str2) fmt.Scanf("%s",&aim) isOk := helper(str1,aim) && helper(str2,aim) if isOk { fmt.Println("YES") }else{ fmt.Println("NO") } return } func helper(str,aim string) bool{ n := len(str) m := len(aim) i:=0 j:=0 for i<n && j<m{ if str[i] == aim[j]{ i++ j++ }else{ //不相同 j 后移 j++ } } //说明 i 走到了尽头 if i == n{ return true } return false }