go的,没有全部过,88%好像是
package main
import (
"fmt"
"strings"
)
func main() {
var s string
fmt.Scan(&s)
s_t := strings.Split(s, "><")
var stack []string
for i := 0; i < len(s_t); i++ {
if strings.HasPrefix(s_t[i], "<") {
s_t[i] = s_t[i][1:]
} else if strings.HasSuffix(s_t[i], ">") {
s_t[i] = s_t[i][:len(s_t[i])-1]
stack = append(stack)
} else {
stack = append(stack, s_t[i])
}
}
if len(s_t) == 1 {
fmt.Println("NO")
return
}
for i := 0; i < len(s_t); i++ {
if strings.HasPrefix(s_t[i], "/") {
if len(stack) == 0 {
fmt.Println("NO")
return
} else if stack[len(stack)-1] != s_t[i][1:] {
fmt.Println("NO")
return
} else if stack[len(stack)-1] == s_t[i][1:] {
stack = stack[:len(stack)-1]
}
} else {
stack = append(stack, s_t[i])
}
}
fmt.Println("YES")
}