搜索引擎中长串匹配及聚类算法:后缀树算法(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
?
然后在测试的时候发现了一个奇怪的问题,平常都觉得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/ |
相关文章推荐
- java中的sleep()和wait()的区别
- java-web-j2e学习建议路线
- spring+hibernate删除单条记录的几种方法
- Eclipse背景颜色修改
- MyEclipse 2015优化技巧
- JAVA监听器原理
- Java总结篇系列:Java多线程(二)
- Java入门基础之常规的命名方法和变量的值及其引用
- JAVA 笔记
- Java中abstract和interface的区别
- Java泛型在spring jdbc template中的类似应用
- 微冷的雨Java基础学习手记(一)
- Java反射讲解
- 如何快速定位到Eclipse自动添加的TODO
- java中Collection 与Collections的区别
- SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
- 搭建andiord sdk和安装eclipse adt插件的个人小体会
- 2015-9-18 spring找不到类的情况
- springMVC+JSON的使用方法