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


京公网安备 11010502036488号