博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算最长英语单词链
阅读量:6710 次
发布时间:2019-06-25

本文共 3593 字,大约阅读时间需要 11 分钟。

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

import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException; public class Max {public static void main(String[] args)throws IOException {    Word word=new Word();                                      //单词的链头    Word lian,xin;                                                 String str="";    File f1=new File("D:\\text.txt");          if(!f1.exists())    {        System.out.println("文件不存在");    }    else        {FileReader f=new FileReader("D:\\text.txt");                //读取英文文件            char[] c=new char[1];                                 //每次读取一个字母    int b=0;    boolean exist=false;                              //判断单词是否存在于  word 链中       BufferedWriter writer2 = new BufferedWriter(new FileWriter(new File("D:\\result.txt"),true));         File writeName=new File("D:\\result.txt");    String S1="";    String S2="";    writeName.createNewFile();      int num1=0;    int num2=0;    int[] Num1=new int[1000000];    int[] Num2=new int[1000000];                while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后    {        int i1=1;        //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始        if(String.valueOf(c).equals("\r")||String.valueOf(c).equals("\n")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals("\"")||String.valueOf(c).equals("'"))        {            lian=word;            while(lian!=null)                        {                if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++                {                    lian.geshu++;exist=true;break;                }                else                {                    if(i1==1)                    {                                                                Num1[num1]=num1;                                        String ss=str.substring(0, 1);                                        S1=S1+ss;                    num1=num1+1;                    }                                        if(i1==1)                    {                        Num2[num2]=num2;                        String ss=str.substring(str.length()-1, str.length());                                                S2=S2+ss;                        num2=num2+1;                    }                                                            i1=i1+1;                    lian=lian.next;                }            }            if(exist==false)                        //如果不存在,则在单词链中添加            {                xin=new Word(str,1);                xin.next=word.next;                word.next=xin;                str="";            }            else            {                exist=false;                str="";            }        }        else                                      //单词        {            str+=String.valueOf(c);        }            }        if(num1==1)    {        System.out.println("只有一个单词");    }    else {            if(num1==0)        {            System.out.println("没有单词");        }                        else {                    System.out.println(S1);    System.out.println(S2);        System.out.println(num1);    for(int im=0;im

建立两个字符串数组,一个放每一个单词的首字母,另一个放每一个单词的尾字母;

然后根据这两个是否相同,放进一个int数组中。

 

转载于:https://www.cnblogs.com/kt-xb/p/11070128.html

你可能感兴趣的文章
tomcat7.0配置CORS(跨域资源共享)
查看>>
EJB 的理解
查看>>
spring集成 JedisCluster 连接 redis3.0 集群
查看>>
Java打印整数的二进制表示(代码与解析)
查看>>
SQL Server 数据库巡检脚本
查看>>
express4.x中的链式路由句柄
查看>>
【设计模式】责任者模式
查看>>
IdentityServer4 实现 OpenID Connect 和 OAuth 2.0
查看>>
2017第3周一
查看>>
python中时间操作总结
查看>>
作业调度框架_Quartz
查看>>
node.js博客GitHub搭建(hexo)
查看>>
dwarf调试信息格式入门
查看>>
dedecms的自定义模块
查看>>
ZOJ1450 BZOJ1136 BZOJ1137 HDU3932[最小圆覆盖]
查看>>
推荐一个SAM文件中flag含义解释工具--转载
查看>>
asp.net网站中添加百度地图功能
查看>>
php使用fputcsv进行大数据的导出
查看>>
【架构】分布式追踪系统设计与实现
查看>>
Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常
查看>>