计算最长英语单词链
一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,
快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。
最长的定义是:最多单词数量,和单词中字母的数量无关。
统一输入文件名称:input1.txt, input2.txt
统一输出文件名称:output1.txt,output2.txt
public static void main(String[] args) { String piao=""; int panduan; try { FileReader reader = new FileReader("E:\\java\\piao\\src\\input1.txt"); BufferedReader br = new BufferedReader(reader); String line; while((line = br.readLine()) != null) { piao=piao+line; piao=piao+" "; } }catch(IOException e) { System.out.print("错"); panduan=1; } /*piao=piao.toLowerCase(); char []p=piao.toCharArray(); System.out.println(p);*/ piao=piao.toLowerCase(); String []p1=piao.split(" "); //字符串转数组 /* for(int i=0;i<p1.length;i++) { System.out.println(p1[i]); }*/ String danci; //循环本次单词 String danci2; //后面的单词 String s; //本次单词开头 String s2; String e; //本次单词结尾 String e2; int []dc=new int[p1.length]; int i,j; for( i=0;i<p1.length;i++) { danci=p1[i]; s=danci.substring(0, 1); e=danci.substring(danci.length()-1,danci.length()); /* System.out.println(danci); System.out.println(s); System.out.println(e);*/ for(j=i;j<p1.length-1;j++) { danci2=p1[j+1]; s2=danci2.substring(0, 1); e2=danci2.substring(danci2.length()-1,danci2.length()); /* System.out.println(danci2); System.out.println(s2); System.out.println(e2);*/ if(e.equals(s2)) { dc[i]++; e=e2; } } } int max=0; int m=0; for(i=0;i<p1.length-1;i++) { /*if(dc[i]<dc[i+1]) max=i+1;*/ if(dc[i]<dc[i+1]) { max=i+1; } else { dc[i+1]=dc[i]; } } /*System.out.println(max);*/ try { FileOutputStream file=new FileOutputStream("E:\\java\\piao\\src\\output1.txt"); DataOutputStream out=new DataOutputStream(file); danci=p1[max]; s=danci.substring(0, 1); e=danci.substring(danci.length()-1,danci.length()); out.writeUTF(danci); for(j=max;j<p1.length-1;j++) { danci2=p1[j+1]; s2=danci2.substring(0, 1); e2=danci2.substring(danci2.length()-1,danci2.length()); if(e.equals(s2)) { dc[i]++; e=e2; out.writeUTF(danci2); } } out.close(); }catch(IOException q) { } }

浙公网安备 33010602011771号