zoukankan      html  css  js  c++  java
  • 计算最长英语单词链

     设计思路:

    这个问题,首先要找出每个单词的首尾字母,通过判断首尾相同的字母连接在一起;

    如何存每个单词的首尾字母?这里借鉴同学的方法:建立两个字符串数组,一个放每一个单词的首字母,另一个放每一个单词的尾字母;

    然后根据这两个是否相同,放进一个int数组中

    源代码:

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileReader;

    import java.io.FileWriter;

    import java.io.IOException;

    public class Max {

    public static void main(String[] args)throws IOException {

        Word word=new Word();                                      //单词的链头

        Word lian,xin;                                             

        String str="";

        File f1=new File("D:\text.txt");      

        if(!f1.exists())

        {

            System.out.println("文件不存在");

        }

        else

            {FileReader f=new FileReader("D:\text.txt");                //读取英文文件

        

        

        char[] c=new char[1];                                 //每次读取一个字母

        int b=0;

        boolean exist=false;                              //判断单词是否存在于  word 链中

       

        BufferedWriter writer2 = new BufferedWriter(new FileWriter(new File("D:\result.txt"),true));

        

        File writeName=new File("D:\result.txt");

        String S1="";

        String S2="";

        writeName.createNewFile();

      

        int num1=0;

        int num2=0;

        int[] Num1=new int[1000000];

        int[] Num2=new int[1000000];

        

        

        

        while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后

        {

            int i1=1;

            //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始

            if(String.valueOf(c).equals(" ")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals(""")||String.valueOf(c).equals("'"))

            {

                lian=word;

                while(lian!=null)            

                {

                    if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++

                    {

                        lian.geshu++;exist=true;break;

                    }

                    else

                    {

                        if(i1==1)

                        {

                            

                        

                        Num1[num1]=num1;

                        

                        String ss=str.substring(0, 1);

                        

                        S1=S1+ss;

                        num1=num1+1;

                        }

                        

                        if(i1==1)

                        {

                            Num2[num2]=num2;

                            String ss=str.substring(str.length()-1, str.length());

                            

                            S2=S2+ss;

                            num2=num2+1;

                        }

                        

                        

                        i1=i1+1;

                        lian=lian.next;

                    }

                }

                if(exist==false)                        //如果不存在,则在单词链中添加

                {

                    xin=new Word(str,1);

                    xin.next=word.next;

                    word.next=xin;

                    str="";

                }

                else

                {

                    exist=false;

                    str="";

                }

            }

            else                                      //单词

            {

                str+=String.valueOf(c);

            }

            

        }

        

        if(num1==1)

        {

            System.out.println("只有一个单词");

        }

        else {

        

            if(num1==0)

            {

                System.out.println("没有单词");

            }

            

            

            else {

            

            

        System.out.println(S1);

        System.out.println(S2);

        

        System.out.println(num1);

        for(int im=0;im<num1;im++)

        {

            String s1=S1.substring(im, im+1);

            int ii=1;

            for(int in=0;in<num1;in++)

            {

                

                String s2=S2.substring(in, in+1);

                

                int n1=Num1[im];

                int n2=Num2[im];

                

                if(!s1.equals(s2))

                {

                    System.out.println("没有首尾相连单词");

                }

                    

                    

                if(s1.equals(s2))

                {

                    

                    

                    

                    

                    int N=20;

                    for(int i=1;i<=10;i++)                   

                    {

                        xin=new Word("",0);

                        lian=word.next;

                        //找到单词链中个数最多的

                        while(lian!=null)

                        {

                            

                                xin=lian;

                            

                            lian=lian.next;

                        }

                        int m=n1-1;

                        if(i==n1-1)

                        {

                            

                             System.out.println(""+i+":"+xin.value+"个数:"+xin.geshu);

                        

                             try  {

                                 

                                 BufferedWriter writer = new BufferedWriter(new FileWriter(new File("D:\result.txt"),true));

                                 writer.write(" "+xin.value);

                                 writer.close();

                                    

                                }

                             catch (IOException e) {

                                e.printStackTrace();

                            }

                

                        

                        }

                        lian=word;

                        //删除单词链中单词个数最多的

                        while(lian.next!=null)

                        {

                            if(lian.next.value.equalsIgnoreCase(xin.value))

                            {

                                lian.next=lian.next.next;

                                break;

                            }

                            lian=lian.next;

                        }

                    }

                    

                }

            }

            

            ii=ii+1;

            

            

        }

        

               }

        }

        

            }

    }

    }

     摘自https://www.cnblogs.com/smartisn/p/10989038.html

  • 相关阅读:
    C语言 assert 函数
    C语言 exit 函数
    C语言 main 函数参数 main(int argc, char *argv[])
    《一线架构师实践指南》读后感(一)
    机器学习十讲第八讲
    机器学习十讲第七讲
    Python通过IMAP实现邮箱客户端
    ABAP-PS操作
    ABAP-AES加解密
    ABAP-HmacSHA256
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/11058148.html
Copyright © 2011-2022 走看看