我有一本字典是这样的
"奥铃"字样
"奥铃TFR"车窗标识
"北京奥铃汽车"标牌
"福田"标志
"福田奥铃"标识
"福田汽车"标牌
"警告"标识
"快运I"标识
"快运II"标识
"欧Ⅱ"标识
"欧Ⅲ"玻璃贴
"欧马可"字样
里面大概有20万条数据,我想输入一段话,把里面,包含我字典中的词语,都查询出来。
求各位大虾指点,用trie实现,最好有源码,嘻嘻。谢谢各位了。
"奥铃"字样
"奥铃TFR"车窗标识
"北京奥铃汽车"标牌
"福田"标志
"福田奥铃"标识
"福田汽车"标牌
"警告"标识
"快运I"标识
"快运II"标识
"欧Ⅱ"标识
"欧Ⅲ"玻璃贴
"欧马可"字样
里面大概有20万条数据,我想输入一段话,把里面,包含我字典中的词语,都查询出来。
求各位大虾指点,用trie实现,最好有源码,嘻嘻。谢谢各位了。
具体就是利用这些字符串的公共前缀,以及后缀与其他字符串的前缀的最大重叠部分。
利用公共前缀比较好理解,后缀与前缀重叠部分,其实就是当前字符串匹配失败后,要跳转到哪个字符串去继续匹配。比如,当前是在abcd上匹配,然后来了个e,但是我要找的字符串里面没有abcde,但是有cdeaa字符串,那么就可能跳转到cde上去往后面匹配。
具体代码可以参考:http://blog.csdn.net/wenfengmtd/article/details/5220620
这个代码《程序员实用算法》附带的代码,不过是用C语言实现的,不要用c++的编译方法去编译。可以用CC编译,你修改下应该可以用吧。
《程序员实用算法》可以从http://ishare.iask.sina.com.cn/search.php?key=%B3%CC%D0%F2%D4%B1%CA%B5%D3%C3%CB%E3%B7%A8&from=index&format=
下载。你看看是否对你有用。