题目描述
题目思路
我主要是将本次练习的思路分成了三块:
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("文件不存在!");
}
}
}
标签:String,int,练习,length,英文单词,sb,new,strings,首尾相连
From: https://www.cnblogs.com/liuzijin/p/17161634.html