📜  门|门 IT 2008 |第 35 题(1)

📅  最后修改于: 2023-12-03 15:42:22.117000             🧑  作者: Mango

门|门 IT 2008 |第 35 题

本题目是《门|门 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

以上就是本题目的解题思路和程序实现。