package main
import “fmt”
const N = 10
type tireNode struct {
nodes [26]*tireNode
cnt int
}
var root *tireNode
func insert(str string) {
temproot := root
for i := 0; i < len(str); i {
s := str[i] - ‘a’
if temproot.nodes[s] == nil {
temproot.nodes[s] = &tireNode{
nodes: [26]*tireNode{},
cnt: 0,
}
}
temproot = temproot.nodes[s]
}
temproot.cnt
}
func query(str string) int {
temproot := root
for i := 0; i < len(str); i++ {
s := str[i] - ‘a’
if temproot.nodes[s] == nil {
return 0
}
temproot = temproot.nodes[s]
}
return temproot.cnt
}
func main() {
var n int
fmt.Scanf(
“%d\n”,
&n,
)
root = new(tireNode)
for n > 0 {
n–
var op, str string
fmt.Scanf(
“%s %s\n”,
&op,
&str,
)
if op == “I” {
insert(str)
} else {
fmt.Println(query(str))
}
}
}
贴代码的时候可以使用
渲染代码以更好地展现。
贴贴