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

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

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

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

    output2.txt

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

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

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

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

    package letteron;
     
    import java.io.*;
    import java.util.*;
     
     
     
     
    public class Letteron {
     
        public static void main(String[] args)throws FileNotFoundException, IOException  {
            // TODO 自动生成的方法存根
     
            File file=new File("F:/java开发/input.txt");
            File file2=new File("F:/java开发/output.txt");
     
             
            if(!file.exists())
            {
                System.out.println("文件不存在!");
            }
            else if(file.exists() && file.length() == 0) { 
                System.out.println("文件为空!"); 
            } //判断是否文件为空
            else
            {
                BufferedReader br=new BufferedReader(new FileReader(file));
                BufferedWriter bw = new BufferedWriter(new FileWriter("F:/java开发/output.txt")) ;
                 
     
                String s;
                int i,j;
                ArrayList<ArrayList<String>> listall=new ArrayList();
                String key;
                s=br.readLine();
                //将文本文件中的所有信息变为字符串
                String []s1=s.split(" ");//以空格为分割划分每个单词
                if(s1.length==1)
                    System.out.println("单词数为1");
                else
                {
                         
               for(i=0;i<s1.length;i++)
               {
                   System.out.println(s1[i]);
               }//测试录入
                
               for(j=0;j<s1.length;j++)
               {
                   ArrayList<String> list=new ArrayList<String>();
                   key=s1[j].substring(s1[j].length()-1);
                   list.add(s1[j]);
                   System.out.println("key:"+key);
                   for(i=1;i<s1.length;i++)
                    {
                       
                   if(key.equals(s1[i].substring(0, 1)))
                   {
                       list.add(s1[i]);
                       key=s1[i].substring(s1[i].length()-1);
                   }
                   else
                       continue;
                    }
                   listall.add(list);
               }
               int max=0;
               int count=0;
                
               for(i=0;i<listall.size();i++)
               {
                   if(max<listall.get(i).size())
                   {
                       max=listall.get(i).size();
                       count=i;
                   }
               }
               System.out.println("排位"+count);
               System.out.println("最长单词链为:");
               for(i=0;i<listall.get(count).size();i++)
               {
                   System.out.println(listall.get(count).get(i));
                   bw.write(listall.get(count).get(i));
                   bw.write(" ");
               }
                br.close();
                bw.close();
                }
            }
            }
             
        }
    

      

  • 相关阅读:
    轻松实现内容的无缝平滑滚动
    世界“新七大奇迹”揭晓 中国长城成功入选
    Blog_Backup:绿色博客备份工具
    【Vista中系统准备工具存在隐患,自动清除用户资料】
    Oracle大连全球支持中心运营就在我们公司前面!
    ASP.NET2.0下使用AJAX调用Webservice的方法
    配合AJAX天气预报的WebService
    Google兑现承诺你可以从google上删除你的搜索记录了
    全体注意:@live.com 形势不妙,可能三周内被收回
    国内软件联盟抨击微软以非正规手段推文档标准
  • 原文地址:https://www.cnblogs.com/gkl20173667/p/11066431.html
Copyright © 2011-2022 走看看