计算最长单词链
大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词中字母的数量无关。
首先构思如何编写该题目,首先要获取文件中的字母集合,通过循环嵌套,用key表示尾字母,然后一一使用循环判断是否可以形成链。将形成的链存储到一个总的List中。
随后在经过for循环判断每天链的长度进行比较得出最长的单词链进行输出。添加至文件中。关闭文件。
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();
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!