本文为原创,如需转载,请注明作者和出处,谢谢!

面对浩瀚的信息海洋,找到想要的资源有时真的是不容易。在大量文字中搜索高频词汇是信息搜索和数据压缩的共通课题。

这次智慧擂台请大家在一个比较庞大的英文文本中找出M个数量最多的短语(由N个单词组成)。统一处理相同的文本文件,该文本只包含英文单词、空格和回行符,比较谁的程序效率最高。

程序输入:M,N,文本文件路径(M不超过20,N不超过8)

程序输出:高频短语及其数量清单

擂台规则:提交符合以上要求的可执行程序,语言招式不限,点到为止;

我们将在统一的环境下对每位选手的作品进行公平的测试,

比较出综合用时最少的程序。

源程序

import

java.io.

*

;

import

java.util.

*

;

class

tt

{

public

String phrase;

public

int

count;

}

public

class

searchphrase

{

private

static

LinkedHashMap phrase

=

new

LinkedHashMap();

static

tt[] max_phrase;

private

static

Vector SeparateString(String s)

{

Vector v

=

new

Vector();

String temp

=

""

;

for

(

int

i

=

0

; i

<

s.length(); i

++

)

{

if

(s.charAt(i)

!=

'

'

)

{

temp

+=

s.charAt(i);

}

else

{

if

(temp

!=

""

)

v.add(temp);

temp

=

""

;

}

}

if

(temp

!=

""

)

v.add(temp);

return

v;

}

private

static

void

swap(

int

pos,

int

count, String phrase)

{

int

i;

if

(max_phrase[pos

-

1

].count

<

count)

{

for

(i

=

pos

-

1

; i

>

0

; i

--

)

{

if

(max_phrase[i

-

1

].count

>

max_phrase[i].count)

break

;

}

max_phrase[pos].count

=

max_phrase[i].count;

max_phrase[pos].phrase

=

max_phrase[i].phrase;

max_phrase[i].count

=

count;

max_phrase[i].phrase

=

phrase;

}

}

private

static

void

adjust_max(

int

count, String phrase)

{

int

i, j;

if

(count

<=

max_phrase[max_phrase.length

-

1

].count)

return

;

for

(i

=

max_phrase.length

-

1

; i

>=

0

; i

--

)

{

if

(max_phrase[i].phrase.equals(phrase))

{

max_phrase[i].count

=

count;

if

(i

>

0

)

{

swap(i, count, phrase);

}

return

;

}

}

max_phrase[max_phrase.length

-

1

].count

=

count;

max_phrase[max_phrase.length

-

1

].phrase

=

phrase;

if

(i

>

0

)

{

swap(max_phrase.length

-

1

, count, phrase);

}

}

private

static

void

js(Vector v,

int

n)

{

String s;

for

(

int

i

=

0

; i

<

v.size()

-

n

+

1

; i

++

)

{

s

=

""

;

for

(

int

j

=

i; j

<

i

+

n; j

++

)

{

s

+=

v.get(j)

+

"

"

;

}

int

count

=

1

;

if

(phrase.containsKey(s.hashCode()))

{

count

=

Integer.parseInt(phrase.get(s.hashCode()).toString());

count

++

;

}

phrase.put(s.hashCode(), count);

adjust_max(count, s);

}

}

public

static

void

main(String[] args)

{

try

{

long

t;

int

m, n;

String path;

m

=

Integer.parseInt(args[

0

]);

n

=

Integer.parseInt(args[

1

]);

path

=

args[

2

];

max_phrase

=

new

tt[m];

for

(

int

i

=

0

; i

<

m; i

++

)

{

max_phrase[i]

=

new

tt();

max_phrase[i].count

=

0

;

max_phrase[i].phrase

=

""

;

}

t

=

(

new

java.util.Date()).getTime();

java.io.FileReader fr

=

new

java.io.FileReader(path);

java.io.BufferedReader br

=

new

BufferedReader(fr);

String s;

Vector v

=

null

;

while

((s

=

br.readLine())

!=

null

)

{

v

=

SeparateString(s);

js(v, n);

}

for

(

int

i

=

0

; i

<

m; i

++

)

{

System.out.println(max_phrase[i].phrase);

System.out.println(max_phrase[i].count);

System.out.println();

}

t

=

(

new

java.util.Date()).getTime()

-

t;

System.out.print(t);

System.out.println(

"

ms

"

);

}

catch

(Exception e)

{

System.out.println(e.getMessage());

}

}

}

测试结果1:m = 20 n = 8

under games played won drawn lost goals for

71

tabulated under games played won drawn lost goals

70

games played won drawn lost goals for against

70

May Xinhua Following are the results from the

69

played won drawn lost goals for against and

59

won drawn lost goals for against and points

59

Jan Xinhua Following are the results from the

48

Chinas economic efficiency indicators of the sector of

39

The industrial statistics include all stateowned enterprises and

39

industrial statistics include all stateowned enterprises and the

39

statistics include all stateowned enterprises and the nonstateowned

39

include all stateowned enterprises and the nonstateowned ones

39

all stateowned enterprises and the nonstateowned ones with

39

stateowned enterprises and the nonstateowned ones with annual

39

enterprises and the nonstateowned ones with annual sales

39

and the nonstateowned ones with annual sales income

39

Xinhua Chinas economic efficiency indicators of the sector

39

the nonstateowned ones with annual sales income over

39

nonstateowned ones with annual sales income over million

39

up percent over the same period last year

35

13594 ms

测试结果2  m = 10 n = 5

Xinhua Following are the results

295

May Xinhua Following are the

209

Following are the results from

183

are the results from the

176

April Xinhua Following are the

141

Jan Xinhua Following are the

122

billion yuan billion US dollars

120

won drawn lost goals for

88

played won drawn lost goals

88

Dec Xinhua Following are the

87

12437 ms

以上源程序是采用的是最简单的方法,谁有更好,效率更高的方法,请跟贴!!

用Java输出高频词_高频词汇提取的Java实现相关推荐

  1. python如何分析高频词_利用Python统计演讲高频词

    1月9日被誉为中国最牛的产品经理张小龙做了微信的年度演讲[1],引爆朋友圈. 1月10日采铜写了篇<张小龙四个小时的演讲没有讲什么?>[2],又引爆朋友圈.在现在几乎所有人张口就谈&quo ...

  2. 英语自动提取高频词_斑马英语提分营免费体验课

    斑马英语电脑版是一款专业可靠的英语学习软件,斑马英语官方版可以帮助孩子学习纯正的英语口语发音,以讲故事的形式让孩子学习单词及口语练习,斑马英语电脑版针对儿童语言特征设计的智能口语测评系统,能够自动识别 ...

  3. excel如何找到高频词_拟录取后:应届生和往届生档案哪里找;重灾院校区;高频词背诵表...

    今日消息1.应届生和往届生档案哪里找?2.重灾院校区3.考研云督学班高频词背诵表汇总1.应届生和往届生档案哪里找? 往年这个时候论文答辩.复试已经结束,已经进入毕业季!现在你们毕业答辩结束了吗?你们都 ...

  4. 用java编写输出欢迎光临_编写一个完整的Java applet程序,程序功能为:在屏幕上输出“欢迎光临Java世界!”的字符串信息。...

    Applet程序开发主要步骤如下: 1)选用EDIT或Windows Notepad等工具作为编辑器建立Java Applet源程序. 2)把Applet的源程序转换为字节码文件. 3)编制使用cla ...

  5. java青蛙过河打字_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

  6. java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...

  7. java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理

    知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...

  8. java编译器jdk版本_以编程方式确定Java类的JDK编译版本

    java编译器jdk版本 当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在我 ...

  9. java护照号码校验_学无止境之小白学java……第001天

    学习主题:预科阶段 对应视频: http://www.itbaizhan.cn/course/id/18.html 对应作业: 1. 为什么需要学编程,什么样的人可以做程序员? 编程是现实逻辑的表达, ...

  10. java 并发编程多线程_多线程(一)java并发编程基础知识

    线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...

最新文章

  1. 洛谷1216 数字三角形
  2. 阿里分布式事务框架GTS开源了!
  3. 安装SQL2000,挂起无法安装问题
  4. Android Studio同步失败设置代理,Android Studio如何设置代理?
  5. 利用jQuery和bootstrap更改radio样式
  6. 怎么修改图例位置_学到了学到了,叠加图,原来可以这样处理图例
  7. vue怎么编辑已有视频_手机制作短视频、VLOG用啥App?~~
  8. Node.js快速文件服务器(通过HTTP的静态文件)
  9. 【锐捷校园网用电脑开热点】简明教程
  10. win10写java工具_推荐三款录屏工具:也许是电脑录屏最实用的软件
  11. 查看Casio PDA 的物理地址 MAC (DT-X7系列)
  12. 微信自定义分享,分享至QQ和空间自定义内容正常、分享至微信时只有链接问题
  13. STM32CubeIDE Audio播放音频 WM8978 + I2S + DMA双缓存模式
  14. ckeditor5加字数_ckeditor 字数限制
  15. AutoCAD2011官方原版软件下载
  16. 全民战“疫”,大数据和AI厂商做了什么……
  17. python中的break、continue和pass
  18. 系统默认环境变量PATH设置
  19. 流畅的Python阅读笔记(二)
  20. 小二读西游-石猴破,金光宣

热门文章

  1. IIC扩展IO NCA9555代码
  2. 浏览器打开html文件特别慢,打开网页慢是什么原因,教您打开网页慢怎么解决
  3. windows关闭休眠
  4. kubernetes日志架构
  5. SDUT-程序设计基础-实验1-顺序结构
  6. Perl 输出数据结构:Dumper
  7. 整理好心情,在春天里上路···
  8. 6.4.3 拓扑排序 番茄炒蛋工程
  9. Work Stealing Pool线程池
  10. Delphi 编译的程序在win10中怎样默认以管理员身份运行