您的位置:首页 > 编程语言 > Java开发

搜索引擎中长串匹配及聚类算法:后缀树算法(Java版)

2015-09-18 09:14 459 查看
前两天用C++写了一个后缀树算法,今天把它直译成java了,经过一晚上的努力终于调试通了,现在把构造后缀树的核心代码贴出来,大家可以交流一下,比如查找下一个更短的后缀时有木有更好的方法啊.

然后在测试的时候发现了一个奇怪的问题,平常都觉得C++会比Java快,然而这次测试却截然相反,都是单线程构造同样的46K全英文文本,C++用了2分零3秒,而Java仅仅用了4秒钟,这个问题我感到挺诧异的,因为我都是就想C++都要那么久那Java是不是更得等半天呢,难道Java在处理字符串上比C++有优势吗?我在C++里面用的是容器string.这个其实很值得研究一下.

题外话:我写了一个c++的程序来将c++的源代码转换为java源代码,比手工修改起来还是方便多了,如果哪位需要的话可以找我要源码,也可以探讨一下这方面经验.

此外,由于下面的代码是直译过来的,可能不太符合java的风格,看着别扭的地方还请勿拍砖.

Java code

?
?
输出结果:

*** 关键词表 *******

上海 ---> 上海

北京 ---> 北京

天安门 ---> 天安门

中国人 ---> 中国人

江泽民 ---> 江泽民

中华人民共和国 ---> 中华人民共和国

年 ---> 年

, ---> 逗号

毛泽东 ---> 毛泽东

中国 ---> 中国

*** 文本 *******

1949年10月1日,在北京天安门上,毛泽东庄严宣布,

中华人民共和国成立了,从此,中国人民站起来了。这是全中国人民的节日,

北京、上海等地的人民欢呼雀跃。

*** 结果 *******

上海 ===> 1

北京 ===> 2

中国人 ===> 2

天安门 ===> 1

中华人民共和国 ===> 1

年 ===> 1

毛泽东 ===> 1

逗号 ===> 6

?
------- 匹配对应表 -------

*.baidu.com/set ---> *.baidu.com/set

*.sina.com.cn ---> *.sina.com.cn

*.baidu.com ---> *.baidu.com

*.sina.com.cn/images ---> *.sina.com.cn/images

news.sina.com.cn ---> news.sina.com.cn

www.baidu.com/search/ ---> www.baidu.com/search/

*.baidu.cn ---> *.baidu.cn

*.sina.com.cn/news/daily/a.jpg ---> *.sina.com.cn/news/daily/a.jpg

*.sina.com.cn/z ---> *.sina.com.cn/z

*.baidu.com/se ---> *.baidu.com/se

www.baidu.com/ ---> www.baidu.com/

------- 匹配结果 -------
http://new-s.sina.com.cn ===> *.sina.com.cn
http://news.sina.com.cn ===> news.sina.com.cn
https://news_sina3com4cn ===> null
https://news.sina.com.cn/z/2010chunyun/index.shtml ===> *.sina.com.cn/z
http://h3.news.sina.com.cn/z/2010chunyun/index.shtml ===> *.sina.com.cn/z

ent.sina.com.cn/entertainment/x/3/a.html ===> *.sina.com.cn

news.sina.com.cn ===> news.sina.com.cn

news_sina3com4cn ===> null

news.sina.com.cn/z/2010chunyun/index.shtml ===> *.sina.com.cn/z

ent.sina.com.cn/entertainment/x/3/a.html ===> *.sina.com.cn

hollywood.sina.com.cn/entertainment/news/today.html ===> *.sina.com.cn

www.baidu.com/search?key=3&a=b ===> *.baidu.com/se

mp3.baidu.com/download/song=1 ===> *.baidu.com

video.baidu.com/screen/video=2 ===> *.baidu.com

www.baidu.com/news/a.html ===> www.baidu.com/

www.baidu.com/setup/ ===> *.baidu.com/set

www.baidu.com/search/abcd.jpg ===> www.baidu.com/search/

www.baidu.com/search/mp3/test.jpg ===> www.baidu.com/search/

www.baidu.com/search/video/flash/new.jpg ===> www.baidu.com/search/

www.baidu.com/news/daily/headline.jpg ===> www.baidu.com/

www.baidu.com/news/daily/common/headline.jpg ===> www.baidu.com/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: