设计思想:将文本内的文章分割成单词,并对每个单词向后遍历,定义一个字符串用来储存连接后的单词链,再定义一个字符串用来储存每次遍历后最长的单词链。
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;
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 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("没有首尾相连");
}
}
}
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("没有首尾相连");
}
}
}