• 个人作业-最长英语链


    大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词中字母的数量无关。

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

    统一输出文件名称:output1.txt,output2.txt

    程序需要考虑下列异常状况:

    例如,文件不存在,你的程序会崩溃么,还是能优雅地退出并给用户提示信息?

    如果文件没有任何单词、只有一个单词、没有可以首尾相连的单词,程序应该如何输出?

    如果输入文件有一万个单词,你的程序能多快输出结果?

    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    @SuppressWarnings("unused")
    public class words {
    
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public static void main(String[] args)
        {
            String now="";
            List<String> l=new ArrayList();
            List<List<String>> ls=new ArrayList<List<String>>();
            int l_i=0,ls_i=0;
            int i=0,t=0,flag=0,max=0;
            try
            {
                FileReader fr=new FileReader("input2.txt");
                @SuppressWarnings("resource")
                Scanner in =new Scanner(fr);
                //初始化
    
                //读取
                while(in.hasNext())
                {
                    now=in.next();
                    System.out.println(now);
                    if(flag==0)
                    {
                        l=new ArrayList();
                        l.add(now);
                        ls.add(l);
                        flag=1;
                    }
                    else
                    {
                        for(i=0;i<ls.size();i++)//遍历所有表
                        {
                            if(ifLian(ls.get(i).get(ls.get(i).size()-1),now))//首尾相连
                            {
                                l=new ArrayList();
                                l=ls.get(i);
                                l.add(now);
                                ls.set(i, l);
                            }
    
                        }
                        l=new ArrayList();
                        l.add(now);
                        ls.add(l);
                    }
                    
                }
                
                //寻找最大
                max=ls.get(0).size();
                for(i=0;i<ls.size();i++)
                {
                    if(max<ls.get(i).size())
                    {
                        max=ls.get(i).size();
                    }
                }
                
                for(i=0;i<ls.size();i++)
                {
                    for(t=0;t<ls.get(i).size();t++)
                    {
                        System.out.print(ls.get(i).get(t)+" ");
                    }
                    System.out.println();
                }
                PrintWriter fw=new PrintWriter("output.txt");
                for(i=0;i<ls.get(max).size();i++)
                {
                    fw.println(ls.get(i)+" ");
                }
                fw.flush();
                fw.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            
    
        }
        public static boolean ifLian(String a,String b)//a的结尾与b的开头是否一致   apple
        {
            if(a.charAt(a.length()-1)==b.charAt(0))
            {
                return true;
            }
            else
            {
                return false;
            }
                
                
        }
    
    }

  • 相关阅读:
    粤语·简约学习笔记
    Linux的网卡由eth0变成了eth1
    RedHat 更新CentOS Yum源
    Lamp 搭建
    像淘宝、京东这样的大型电商网站服务器构架完全部署方案
    完成静态服务器——Node.js摸石头系列之四
    实现使用Websocket通讯的聊天室——Node.js摸石头系列之六
    Node.js摸石头系列目录
    Aptana studio 3 修改配色方案
    Node.js 的安装和控制台命令——Node.js摸石头系列之一
  • 原文地址:https://www.cnblogs.com/chenyuchun/p/11061665.html
Copyright © 2020-2023  润新知