计算最长英语单词链

一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,

快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。

最长的定义是:最多单词数量,和单词中字母的数量无关。

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

统一输出文件名称:output1.txtoutput2.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) {
                
            }
    }

 

 

 

posted @ 2019-06-09 18:53  至尊小虾米  阅读(167)  评论(0)    收藏  举报