📅  最后修改于: 2023-12-03 15:42:22.117000             🧑  作者: Mango
本题目是《门|门 IT 2008》比赛的第35道题目,要求参赛者使用Java语言实现一个简单的记事本程序,并从中提取出所有连续字母组成的单词,并按照首字母从a到z的顺序进行排序。
本程序可以使用Java语言实现,核心算法是通过正则表达式匹配出所有连续字母组成的单词,并利用Java的TreeSet进行排序和去重。
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Set<String> words = new TreeSet<String>();
while (scanner.hasNext()) {
String line = scanner.nextLine();
String[] tokens = line.split("[^a-zA-Z]+");
for (String token : tokens) {
if (token.length() > 0) {
words.add(token.toLowerCase());
}
}
}
for (String word : words) {
System.out.println(word);
}
}
}
本程序首先创建一个TreeSet,用于存储所有单词,并保证按照字母顺序排序和去重。然后从标准输入中逐行读入文本,并使用正则表达式[^a-zA-Z]+
分割出所有连续字母组成的单词,并将它们转换为小写字母后加入到TreeSet中。最后遍历TreeSet并打印所有单词即可。
测试数据:
This is a test program,
Which will identify and count the words in this file
We will use alpha-beta pruning to simplify the algorithm
输出示例:
a
algorithm
and
beta
count
file
identify
in
is
program
pruning
simplify
test
the
this
use
we
which
will
words
以上就是本题目的解题思路和程序实现。