英文单词首尾相连的练习

题目描述

题目思路

我主要是将本次练习的思路分成了三块:
1、先将各个单词从文件中读取出来,存储在数组中;
2、分别将各个单词的首尾字母各自存储在一个数组中,供于后续的首尾字母的比较
3、利用循环和条件语句进行字母比较,然后存储一下最长的数组和最大的数字并进行输出即可

程序代码

不可否认的是,这里上发的代码还存在一些bug,有些功能还没有完成呢。

package org.example;

import java.io.*;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        ArrayList<String> arr = new ArrayList<>();
        ArrayList<String> a = new ArrayList<>();//存储首字母
        ArrayList<String> b = new ArrayList<>();//存储尾字母
        FileReader fr = null;
        int i = 0;
        String[] strings = new String[1000001];//存储各个单词
        String[] c = new String[100000];
        String[] d = new String[100000];


        //打开文件,将文件中的单词分离,存储到数组中
        try {
            BufferedReader br = new BufferedReader(new FileReader("src/1.txt"));

            String line;
            while ((line = br.readLine()) != null) {
                if (null != line) {
                    strings = line.split(" ");
                }
            }

            //将arr中的单词首尾分别存储到a和b中

            for (i = 0; i < Objects.requireNonNull(strings).length; i++) {
                //存储首字母
                c[i] = strings[i].substring(0, 1);
                //存储尾字母
                d[i] = strings[i].substring(strings[i].length() - 1, strings[i].length());
            }

            //比较各个首尾字母是否相同
            int[] count = new int[1000000];
            StringBuilder sb = new StringBuilder();
            String[] result = new String[1000000];
            int[] ss = new int[1000000];

            for (int j = 0; j < strings.length; j++) {
                sb.delete(0, sb.length());
                count[j] = 1;
                sb.append(strings[j]);
                for (i = 0; i < strings.length - 1; i++) {
                    if (sb.substring(sb.length() - 1, sb.length()).equals(c[i + 1])) {
                        count[j]++;
                        sb.append(strings[i + 1]);
                    }
                }
                result[j] = sb.toString();
            }

            int max = 0;
            for (int k = 0; k < count.length; k++) {
                if (count[k] >= max) {
                    max = count[k];
                }
            }
            System.out.println(max);

            int sum = 0;
            String m = "";
            for (int k = 0; k < count.length; k++) {
                if (count[k] >= sum) {
                    sum = count[k];
                    m = result[k];
                }
            }

            System.out.println(m);

            //System.out.println(sb.toString());

        } catch (Exception e) {
            System.out.println("文件不存在!");
        }
    }







}
posted @ 2023-02-27 20:01  yesyes1  阅读(12)  评论(0编辑  收藏  举报