Files
Go-tool/util/trie/Trie_test.go
T

116 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* @Author : huangzj
* @Time : 2020/12/14 16:15
* @Description
*/
package trie
import (
"fmt"
"testing"
)
func TestTrie(t *testing.T) {
commonTest() //常规功能测试
sensitiveWordsTest() //敏感词汇屏蔽测试
searchTrie() //查找前缀匹配的所有字符串
searchTrieVague() //模糊查询前缀匹配的所有字符串
}
func searchTrieVague() {
fmt.Println()
fmt.Println("模糊查询 查找前缀匹配的所有字符串")
trie := New()
trie.insert("abcuuid").insert("abcuued").insert("abcMxns").insert("abssde").insert("avddfa")
trie.insert("我爱中国").insert("我爱祖国").insert("我爱学习").insert("我是谁").insert("我在哪里")
trie.insert("我是你").insert("我").insert("我喜欢学习").insert("我在厦门").insert("我是一个程序员")
fmt.Println()
fmt.Println()
result3, _ := trie.SearchTrieVague("我爱她")
for _, r := range result3 {
fmt.Println(r)
}
}
func searchTrie() {
fmt.Println()
fmt.Println("查找前缀匹配的所有字符串")
trie := New()
trie.insert("abcuuid").insert("abcuued").insert("abcMxns").insert("abssde").insert("avddfa")
trie.insert("我爱中国").insert("我爱祖国").insert("我爱学习").insert("我是谁").insert("我在哪里")
fmt.Println()
fmt.Println()
result, _ := trie.SearchTrie("abc")
for _, r := range result {
fmt.Println(r)
}
fmt.Println()
fmt.Println()
result1, _ := trie.SearchTrie("我爱")
for _, r := range result1 {
fmt.Println(r)
}
fmt.Println()
fmt.Println()
result2, _ := trie.SearchTrie("我爱她")
for _, r := range result2 {
fmt.Println(r)
}
}
func sensitiveWordsTest() {
trie := New()
trie.insert("粗话").insert("fuck").insert("fuckk").insert("脏话")
s := "我是脏话,我是粗话,fuckk,fuck,fffuccck"
word := trie.DealFunc(s, func(sentence []rune, start int, end int) string {
var replace string
for i := 0; i < end-start; i++ {
replace = replace + "*"
}
runes := append(sentence[0:start], []rune(replace)...)
runes = append(runes, sentence[end:]...)
return string(runes)
})
fmt.Println(word)
}
func commonTest() {
trie := New()
trie.insert("ABC").insert("AB").insert("ABE").insert("ABEX").insert("XYZ").insert("你").insert("你好").insert("你是谁")
result := trie.Traverse()
for _, r := range result {
fmt.Println(r)
}
fmt.Println()
fmt.Println("进行查找测试")
fmt.Println(trie.Search("Abc"))
fmt.Println(trie.Search("ABC"))
fmt.Println(trie.Search("ABEX"))
fmt.Println(trie.Search("ABEx"))
fmt.Println(trie.Search("你好"))
fmt.Println(trie.Search("你好吗"))
fmt.Println("进行删除测试")
trie.Delete("你").Delete("ABC")
fmt.Println(trie.Search("你"))
fmt.Println(trie.Search("你好"))
fmt.Println(trie.Search("你是谁"))
fmt.Println(trie.Search("AB"))
fmt.Println(trie.Search("ABE"))
fmt.Println(trie.Search("ABC"))
fmt.Println()
fmt.Println("再次遍历所有的字典")
result = trie.Traverse()
for _, r := range result {
fmt.Println(r)
}
}