注意理解本题
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

}