计算最长英语单词链

设计思想:将文本内的文章分割成单词,并对每个单词向后遍历,定义一个字符串用来储存连接后的单词链,再定义一个字符串用来储存每次遍历后最长的单词链。

package analyse_word;
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 letter_follow_each_other_best {
 
 public static void OutputStream(String max) {
//  将数据写入文件
        PrintStream ps = null;
        try {
            ps = new PrintStream(new FileOutputStream("D:\\empty.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:\\letter_follow_each_other_best.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("没有首尾相连");
  }
  
 }
}

 

posted @ 2019-06-23 00:12  余鱼瑜渔  阅读(174)  评论(0编辑  收藏  举报