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

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

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

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

    设计思路:

    1、判断是否为单词

    2、提取单词的首字母,与前者的尾字母进行判断

    3、从第一单词开始循环往后判断

    jielong.java

    package lianxi;
    
    import java.io.FileReader;
    
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class jielong {
    
        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("d:\input.txt");
                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("d:\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;
            }
                
                
        }
    
    }
    View Code

    java程序显示所有的接龙词语

    input和output

    总结:判断单词的收尾字母这里的逻辑要理一理

  • 相关阅读:
    leetcode-Single Number
    设计模式六大原则(4)——接口隔离原则
    设计模式六大原则(3)——依赖倒置原则
    设计模式六大原则(2)——里氏替换原则
    设计模式六大原则(1)——单一职责原则
    观察者模式
    转:画图工具
    android 博客列表
    app crash率的标准
    查看某一个开发者代码修改量的脚本(ios平台可用)
  • 原文地址:https://www.cnblogs.com/mitang0-0/p/11061878.html
Copyright © 2011-2022 走看看