zoukankan      html  css  js  c++  java
  • 个人作业13 计算最长英语单词链

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

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

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

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

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

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

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

    package expression;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    
    public class word {
        public static void main(String[] args) throws FileNotFoundException {
            File file = new File("D:\Eclipse workspace\English\input1.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");
            System.out.println(i);
            if(max.length()!=0) {
                System.out.println(max);
            }else {
                System.out.println("无首尾相连");
            }
            
        }
    }
  • 相关阅读:
    Linux系统服务
    Linux进程管理
    Linux压缩打包
    Linux输入输出
    Linux权限管理
    Linux用户管理
    Linux文件管理
    Linux-Shell
    Centos7 安装jdk1.8
    Python数据分析之路
  • 原文地址:https://www.cnblogs.com/jbwen/p/11071788.html
Copyright © 2011-2022 走看看