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

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

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

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

    思路:定义一个数组存首字母,一个存尾字母

    然后利用循环遍历文章匹配字母

    导入文件时需要注意文件为空或不存在的情况

    public class dancilian {
    
        public static void main(String[] args) {
    
    dancilian a=new  dancilian();
    File file = new File("E://test//input1.txt");
    String b=a.read(file);
    String[] A =b.split(" ");
    
    String[] f;
    String[] l;
    String[] end;
    f=a.first(A);
    l=a.last(A);
    end=a.jielong(A, l, f);
    
    for(int i=0;i<3;i++)
    System.out.println(end[i]);
    try {
        a.write(end);
    } catch (Exception e) {
        e.printStackTrace();
    }
        }
        public String[] first(String[] A)
        {
            String[] F= new String[A.length];
            for(int i=0;i<A.length;i++)
            {
                F[i]=A[i].substring(0,1);
                }
            return F;
            
        }
        
        public String[] last(String[] A)
        {
            String[] L= new String[A.length];
            for(int i=0;i<A.length;i++)
            {
                L[i]=A[i].substring(A[i].length()-1);
                }
            return L;
            
        }
    public String[] jielong(String[] A,String[] L,String[] F)
    {
        String[] end=new String[A.length];
        int  k=0;
             end[0]=A[0];
             for(int j=0;j<A.length;j++)
             {
                 
             if((end[k].substring(end[k].length()-1)).equals(F[j]))
             {
    
                     end[++k]=A[j];
             
             }
             }
             
        return end;
        
    }
    public String read(File file){
        StringBuilder result = new StringBuilder();
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));
            String s = null;
            while((s = br.readLine())!=null){
                result.append(System.lineSeparator()+s);
            }
            br.close();    
        }catch(Exception e){
            e.printStackTrace();
        }
        return result.toString();
    }
    public void write(String[] str) throws Exception{
    
        File f = new File("E://test//output1.txt");
    
        OutputStream out = new FileOutputStream(f,true);
    
        for(int i=0; i<str.length; i++){
        out.write(str[i].getBytes()); 
        out.write('
    '); 
        out.write('
    '); 
        }
        out.close(); 
        System.out.println("写入成功!");
        }
    }
    自我抑郁又自我救赎
  • 相关阅读:
    动态规划例题
    c++ 进制转换函数
    约瑟夫问题
    set的基本使用
    stl中的二分查找
    1.生成的接口返回参数不包括系统自带的参数
    查看被锁定的表,并解锁
    添加、修改表中的字段
    NPOI简单示例2—合并表头
    NPOI简单示例
  • 原文地址:https://www.cnblogs.com/zjm15511858030/p/11071122.html
Copyright © 2011-2022 走看看