2023.3.5-课堂练习01题目:计算最长英语单词链

简介: 2023.3.5-课堂练习01题目:计算最长英语单词链

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

网络异常,图片无法展示
|

网络异常,图片无法展示
|

package jm0227;


import java.io.*;


publicclass p {


   publicstaticvoid main(String[] args) throws IOException {

       String filename = "input3981.txt";

       File a = new File(filename);

       File file = new File("output3981.txt");

       long startTime = System.currentTimeMillis();

       if (judeFileExists(a)) {

           danci(filename);

       } else {

           try {


               FileWriter fw = new FileWriter(file);

               fw.write("无此文件");

               fw.flush();

               fw.close();

           } catch (IOException e) {

               e.printStackTrace();

           }

       }

       long endTime = System.currentTimeMillis();

       System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间

   }


   publicstaticvoid danci(String s) throws IOException {


       BufferedReader br = new BufferedReader(new FileReader(s));

       StringBuffer sb = new StringBuffer();

       String text = null;

       while ((text = br.readLine()) != null) {

           sb.append(text);

       }

       br.close();

       String str = sb.toString().toLowerCase();

       String[] words = str.split("[^(a-zA-Z)]+");

       StringBuffer yao = new StringBuffer();

       String b1 = words[0];

       yao.append(b1);

       yao.append(" ");

       if (b1.equals("")) {

           System.out.println("文件为空");

           yao.append("文件为空");

       } else {

           if (words.length == 1) {

               System.out.println("只有一个单词");

           }


           String end = b1.substring(b1.length() - 1, b1.length());

           for (int i = 1; i < words.length; i++) {


               String start = words[i].substring(0, 1);

               if (end.equals(start)) {

                   if (judechong(yao, words[i])) {

                   } else {

                       end = words[i].substring(words[i].length() - 1, words[i].length());

                       yao.append(words[i]);

                       yao.append(" ");

                   }


               }

           }


           if (yao.toString().equals(words[0] + " ")) {

               yao.append("无互联语句");

               System.out.println("无互联词");

           }

       }


       File file = new File("output3981.txt");

       try {

           file.createNewFile();

       } catch (IOException e) {

           e.printStackTrace();

       }


       try {


           FileWriter fw = new FileWriter(file);

           fw.write(yao.toString());

           fw.flush();

           fw.close();

       } catch (IOException e) {

           e.printStackTrace();

       }


   }


   publicstaticboolean judechong(StringBuffer yao, String word) {

       String a = yao.toString();

       boolean flag = false;

       String[] words = a.split("[^(a-zA-Z)]+");

       for (int i = 0; i < words.length; i++) {

           if (word.equals(words[i])) {

               flag = true;

           }

       }

       return flag;

   }


   publicstaticboolean judeFileExists(File file) {


       if (file.exists()) {

           System.out.println("文件存在");

           returntrue;

       } else {

           System.out.println("文件不存在");

           returnfalse;

       }

   }


}

网络异常,图片无法展示
|

先把单词读取,再进行逐个判断,最后输出结果。

相关文章
|
27天前
|
负载均衡 Java API
《服务治理》RPC详解与实践
RPC是微服务架构的核心技术,实现高效远程调用,具备位置透明、协议统一、高性能及完善的服务治理能力。本文深入讲解Dubbo实践,涵盖架构原理、高级特性、服务治理与生产最佳实践,助力构建稳定可扩展的分布式系统。(238字)
|
9天前
|
搜索推荐 API Python
DeepSeek-V3.1 发布,迈向 Agent 时代的第一步
今日发布DeepSeek-V3.1,支持混合推理架构,提升思考效率与Agent能力。编程与搜索智能体表现显著增强,API已升级并支持Anthropic格式,模型开源,上下文扩展至128K。
388 5
|
4月前
|
存储 人工智能 JavaScript
小米AI眼镜是值不值得买,看完就知道
2025年6月26日,小米正式发布首款AI眼镜,售价1999元起。搭载高通AR1芯片与恒玄2700,配备1200万摄像头、5麦克风阵列,支持录音转写、同声传译、卡路里识别等功能。可选电致变色镜片,双指轻划0.2秒变色。4GB+32GB存储组合,续航约50分钟。外观致敬Meta RayBan,经典百搭。虽定价略高,但功能丰富,适合有智能穿戴需求的用户。
|
4月前
|
存储 缓存 NoSQL
除了File存储方式,还有哪些适合类Web开发范式的状态持久化方法?
除了File存储方式,还有哪些适合类Web开发范式的状态持久化方法?
|
2月前
|
存储 C语言 C++
& 符号的含义和用法
在C语言中,`&`符号常用于取地址,如`scanf`中传递变量地址以存储输入数据。示例中`&a`和`&x`获取变量内存地址,确保数据正确读入。省略会导致未定义行为。此外,`&`还用于指针声明、按位与运算等,是C/C++中的关键操作符之一。
964 0
|
10月前
|
前端开发 UED 开发者
开发同学如何理解业务?
本文深入探讨了理解业务的重要性及其对于软件开发流程的深远影响。
|
11月前
|
传感器 安全 算法
【C语言】C语言可以做什么?
C语言因其高效、灵活和低级控制能力,被广泛应用于各个领域,从基础设施和科学计算到金融、交通和机器人技术。它在许多关键应用中展示了其不可替代的价值和广泛的适用性。
848 2
|
8月前
|
编解码 监控 安全
JT1078和GB28181差别在哪里?
JT1078和GB28181分别是针对车载监控和公共安全监控设计的标准协议。JT1078专注于车载视频监控,适用于物流与交通场景,强调实时传输、编解码支持及无线环境下的数据安全性;而GB28181侧重于大规模公共安全监控,覆盖城市安防等领域,支持多协议交互与级联方案。两者在技术上有交集,需通过中间件实现互联互通,各有独特优势以满足不同需求。
377 8
|
10月前
|
SQL 人工智能 关系型数据库
【PG锦囊】阿里云 RDS PostgreSQL 版插件—AI 插件(rds_ai)
本文介绍了AI 插件(rds_ai)的核心优势、适用场景等,帮助您更好地了解 rds_ai 插件。想了解更多 RDS 插件信息和讨论交流,欢迎加入 RDS PG 插件用户专项服务群(103525002795)
|
9月前
|
小程序
微信小程序数据绑定与事件处理:打造动态交互体验
在上一篇中,我们学习了搭建微信小程序开发环境并创建“Hello World”页面。本文深入探讨数据绑定和事件处理机制,通过具体案例帮助你打造更具交互性的小程序。数据绑定使用双花括号`{{}}`语法,实现页面与逻辑层数据的动态关联;事件处理则通过`bind`或`catch`前缀响应用户操作。最后,通过一个简单的计数器案例,巩固所学知识。掌握这些核心技能,将助你开发更复杂的小程序。