实现英语接龙

一、题目内容:

大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。

最长的定义是:最多单词数量,和单词中字母的数量无关。

二、题目要求

1、统一输入文件名称:input1.txt, input2.txt

2、统一输出文件名称:output1.txt,output2.txt

3、程序需要考虑下列异常状况:

(1)例如,文件不存在,你的程序会崩溃么,还是能优雅地退出并给用户提示信息?

(2)如果文件没有任何单词、只有一个单词、没有可以首尾相连的单词,程序应该如何输出?

(3)如果输入文件有一万个单词,你的程序能多快输出结果?

 这节课我主要是实现了文件的读取与写入。通过几个少数量单词实现功能来循序渐进。

代码:

复制代码
package lianxi;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class Lianxi {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("input.txt");// 读取文件
if (!file.exists()) {
System.out.println("文件不存在");
return;
}else {
if(file.exists() && file.length() == 0) {
System.out.println("文件为空!");
return;
}
}
long startTime = System.currentTimeMillis();
String[] strs=new String[1000000];
Scanner x = new Scanner(file);
int i=0;
boolean flag=false;
while(x.hasNextLine()) {
String[] str=x.nextLine().split("\\W+");
for(int ms=0;ms<str.length;ms++) {
if(!str[ms].equals("")&&str[ms].length()>2) {
flag=false;
// System.out.println(str[ms]);
if(i!=0) {
for(int t=0;t<i;t++) {
if(!str[ms].equals(strs[t])) {
flag=true;
}
}
}else {
flag=true;
}

if(flag) {
strs[i]=str[ms];
i++;
}

}

}
}
if(i==1) {
System.out.println("该文件只有一个单词!无法实现词语接龙");
}
String sentence = "";
String word="";
String max="";
for(int m=0;m<i;m++) {
sentence = strs[m];
word = sentence;
for(int j=m+1;j<i;j++) {
if(strs[j].toLowerCase().subSequence(0, 1).equals(word.toLowerCase().subSequence(word.length()-1, word.length()))) {
word = strs[j];
sentence+="-"+word;
}
}

if(sentence.indexOf("-")!=-1) {
if(sentence.length()>max.length()) {
max = sentence;
}
}

}

long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime+"ms");
if(max.length()!=0) {
System.out.println(max);
}else {
System.out.println("无首尾相连");
}


}

}
英语接龙
复制代码

 

posted @   权衡  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示