首页 > 其他分享 >计算最长英语单词链

计算最长英语单词链

时间:2023-03-04 13:22:45浏览次数:52  
标签:英语单词 s1 System 单词 计算 println new 最长 listall

大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词中字母的数量无关。统一输入文件名称:input1.txt, input2.txt统一输出文件名称:output1.txt,output2.txt程序需要考虑下列异常状况:例如,文件不存在,你的程序会崩溃么,还是能优雅地退出并给用户提示信息?如果文件没有任何单词、只有一个单词、没有可以首尾相连的单词,程序应该如何输出?如果输入文件有一万个单词,你的程序能多快输出结果?

package file;

import java.io.*;
import java.util.*;


public class Piao {
public static void main(String[] args) throws FileNotFoundException, IOException {
// TODO 自动生成的方法存根

File file = new File("D:\\input1.txt");
File file2 = new File("D:\\output1.txt");


if (!file.exists()) {
System.out.println("文件不存在!");
} else if (file.exists() && file.length() == 0) {
System.out.println("文件为空!");
} //判断是否文件为空
else {
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/output1.txt"));


String s;
int i, j;
ArrayList<ArrayList<String>> listall = new ArrayList();
String key;
s = br.readLine();
//将文本文件中的所有信息变为字符串
String[] s1 = s.split(" ");//以空格为分割划分每个单词
if (s1.length == 1)
System.out.println("单词数为1");
else {

for (i = 0; i < s1.length; i++) {
System.out.println(s1[i]);
}//测试录入

for (j = 0; j < s1.length; j++) {
ArrayList<String> list = new ArrayList<String>();
key = s1[j].substring(s1[j].length() - 1);
list.add(s1[j]);
System.out.println("key:" + key);
for (i = 1; i < s1.length; i++) {

if (key.equals(s1[i].substring(0, 1))) {
list.add(s1[i]);
key = s1[i].substring(s1[i].length() - 1);
} else
continue;
}
listall.add(list);
}
int max = 0;
int count = 0;

for (i = 0; i < listall.size(); i++) {
if (max < listall.get(i).size()) {
max = listall.get(i).size();
count = i;
}
}
System.out.println("排位" + count);
System.out.println("最长单词链为:");
for (i = 0; i < listall.get(count).size(); i++) {
System.out.println(listall.get(count).get(i));
bw.write(listall.get(count).get(i));
bw.write(" ");
}
br.close();
bw.close();
}
}
}

}

首先要获取文件中的字母集合,通过循环嵌套,用key表示尾字母,然后一一使用循环判断是否可以形成链。将形成的链存储到一个总的List中。

随后在经过for循环判断每天链的长度进行比较得出最长的单词链进行输出。添加至文件中。关闭文

标签:英语单词,s1,System,单词,计算,println,new,最长,listall
From: https://www.cnblogs.com/louwangshayu/p/17178139.html

相关文章

  • 2月27日课堂练习 计算超长英语单词链
    在2月27日进行了课堂练习,计算超长英语单词链  packageletteron;importjava.io.*;importjava.util.*;publicclassLetteron{publicstaticvoidmain(Strin......
  • 计算机基础知识
    目录一、路径1、绝对路径2、相对路径二、计算机的本质三、计算机的五大组成部分详细介绍1.控制器2.运算器3.存储设备4.输入设备5.输出设备四、计算机三大核心硬件1.cpu2.......
  • 股票相关性及归一化的涨跌幅收益率计算
    1、打开数据源:importpandasaspdimportnumpyasnpdf=pd.read_excel('gupiao1.xlsx')print(df)2、计算相关性矩阵:df_corr=df.corr()print(df_corr)#输......
  • 子网计算
    https://www.sojson.com/convert/subnetmask.html  ......
  • 并行计算机体系结构
    网络的分类OCNsSANsLANsWANs网络基本概念链路:节点或开关之间的连接线。网络:开关为V,链路为E组成的图;当开关之间全连接,称为全连接网络;网络分类间接网络Ω网络任意......
  • 计算机硬件组成详解
    控制器+运算器=CPU,CPU、内存(主存储器)以及其他I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信现代计算机的结构更复杂,包括多重总线,我们将在后面的小节介绍......
  • GJK算法计算凸多边形之间的距离
    GJK是空间距离检测算法,是由三位(Gilbert,Johnson,andKeerthi's )作者的首字母组成的代称。GJK算法首先要解决计算Minkowski和的问题。所谓Minkowski和,指A、B两个集......
  • [oeasy]python0098_个人计算机浪潮_IBM5100_微软成立_苹果II_VisCalc
    个人计算机浪潮回忆上次内容个人电脑(PC)在爱好者之间疯传人人都有一台计算机从attair-8800到apple-1个人电脑离普通人更近了如果人人都有自己的电脑谁还去用终端连......
  • 计算机组成原理(2)--系统总线
    一、总线基本知识1.总线总线(分散连接):连接多个部件的信息传输线,是各部件共享的传输介质。分散连接:各部件之间使用单独的连线2.总线的信息传送总线上信息的传送:串行和并行​......
  • 课堂练习——计算最长单词链
      packageletteron;importjava.io.*;importjava.util.*;publicclasstext1{publicstaticvoidmain(String[]args)throwsFileNotFoundException......