最长英语单词链

设计思想:读取txt文件内容,把一篇文章分割成一个个单词存入数组,定义一个数组储存最长单词链,通过遍历找出最长单词链,最后写入另一个txt文件。

package words;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
public class lian {
 
 public static void OutputStream(String max) {
//  将数据写入文件
        PrintStream ps = null;
        try {
            ps = new PrintStream(new FileOutputStream("D:\output.txt"));
            //将标准输出重定向到ps输出流
            System.setOut(ps);
            //向标准输出输出一个字符串
            System.out.println(max);
            //向标准输出输出一个对象
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (ps != null) {
                ps.close();
            }
        }
 }
 public static void main(String[] args) throws FileNotFoundException {
  File file = new File("D:\input.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;
    }
//    System.out.println(sentence);
   }
   
  }
  long endTime = System.currentTimeMillis();
  System.out.println(endTime-startTime+"ms");
  System.out.println(i);
  if(max.length()!=0) {
   OutputStream(max);
//   System.out.println(max);
  }else {
   System.out.println("没有首尾相连");
  }
  
 }
}

原文地址:https://www.cnblogs.com/sljslj/p/11071363.html