• 计算最长英语单词链


    计算最长英语单词链的题目为:

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

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

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

    output2.txt

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

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

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

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

    思路:计算最长英语单词链,就是找到文件中可以首尾相接的单词,找到一个这样首尾相接单词数目最多的链

    首先要读取文件,在代码中要有 若文件不存在,要给出提示,当文件中没有单词时输出为空,当文件里只有一个单词时,输出的就为这个单词

    代码没有完全完成以上的任务

    代码为:

    package piao;
    import  java.io.BufferedReader;
    import  java.io.File;
    import  java.io.FileInputStream;
    import  java.io.FileOutputStream;
    import  java.io.FileWriter;
    import  java.io.IOException;
    import  java.io.InputStreamReader;
    import java.util.ArrayList;
    public class find {
    public static void main(String[] args) throws IOException {
         File file = new File("D:\飘.txt");
         ArrayList<String> arrayList = new ArrayList<>();
         try {
      InputStreamReader Reader = new InputStreamReader(new FileInputStream(file));
    BufferedReader buffer = new BufferedReader(Reader);
    String s;
    while ((s = buffer.readLine()) != null) {
    arrayList.add(s);
    }
    buffer.close();
    Reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    String a, b, str;
    String[] arr = new String[arrayList.size()];
    for (int i = 0; i < arrayList.size(); i++) {
    arr[i] = arrayList.get(i);
    }
    String[] s2 = new String[arrayList.size()];
    for (int i = 0; i < arrayList.size(); i++) {
    str = arr[i];
    a = arr[i].substring(arr[i].length() - 1, arr[i].length());
    for (int j = 0; j < arrayList.size(); j++) {
    b = arr[j].substring(0, 1);
    if (arr[i].equals(arr[j]) == false && a.equals(b)) {
    str = str + arr[j];
    a = arr[j].substring(arr[j].length() - 1, arr[j].length());
    }
    b = null;
    }
    s2[i] = str;
    }
    File filew = new File("D:\飘.txt"); 
    FileWriter out = new FileWriter(filew); 
    for (int i = 0; i < s2.length; i++) {
    out.write(s2[i] + "
    ");
    }
    out.close();
    
    System.out.println("输出成功");
    }
    }

    运行结果为:

  • 相关阅读:
    [noip2018]day1
    [CF1110d]JONGMAH
    BZOJ 2733 [HNOI2012]永无乡
    BZOJ 3123 [SDOI2013] 森林
    Nowcoder 练习赛26E 树上路径
    Luogu 2575 高手过招-SG函数
    BZOJ 1123[POI2008]BLO-Tarjan
    Nowcoder OI赛制测试2 F 假的数学题
    Luogu 2467[SDOI2010]地精部落
    Luogu 2216[HAOI2007]理想的正方形
  • 原文地址:https://www.cnblogs.com/zhaoxinhui/p/11003380.html
Copyright © 2020-2023  润新知