【Java每日一题,字符串正则匹配】Andy‘s First Dictionary

简介: 【Java每日一题,字符串正则匹配】Andy‘s First Dictionary

Introduction

Andy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy task for him, as the number of words that he knows is, well, not quite enough. Instead of thinking up all the words himself, he has a briliant idea. From his bookshelf he would pick one of his favourite story books, from which he would copy out all the distinct words. By arranging the words in alphabetical order, he is done! Of course, it is a really time-consuming job, and this is where a computer program is helpful.


You are asked to write a program that lists all the different words in the input text. In this problem, a word is defined as a consecutive sequence of alphabets, in upper and/or lower case. Words with only one letter are also to be considered. Furthermore, your program must be CaSe InSeNsItIvE. For example, words like “Apple”, “apple” or “APPLE” must be considered the same.


Input

The input file is a text with no more than 5000 lines. An input line has at most 200 characters. Input is terminated by EOF.


Output

Your output should give a list of different words that appears in the input text, one in a line. The words should all be in lower case, sorted in alphabetical order. You can be sure that he number of distinct words in the text does not exceed 5000.(Crtl+z作为end of file/EOF结束多组输入)


Sample

input

Adventures in Disneyland
Two blondes were going to Disneyland when they came to a fork in the road. The sign read: "Disneyland Left."
So they went home.

output

a
adventures
blondes
came
disneyland
fork
going
home
in
left
read
road
sign
so
the
they
to
two
went
were
when

Solution

package week4;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main3 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        TreeSet<String> treeSet = new TreeSet();
        Pattern pattern = Pattern.compile("[A-Za-z]+");
        Matcher matcher;
        while (s.hasNextLine()) {
            String line = s.nextLine();
            matcher = pattern.matcher(line);
            while (matcher.find()) {
                treeSet.add(matcher.group().toLowerCase());
            }
        }
        Iterator<String> iterator = treeSet.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            if (!next.equals("")) {
                System.out.println(next);
            }
        }
    }}

Experience

这次真的没想到能够用字符串的正则表达式匹配来完成,同时,题目设计Set的使用。总体比较简单

相关文章
|
5天前
|
Java 索引
String字符串常用函数以及示例 JAVA基础
String字符串常用函数以及示例 JAVA基础
|
7天前
|
Java
Java 字符串分割split空字符串丢失解决方案
Java 字符串分割split空字符串丢失解决方案
|
7天前
|
Java
Java获取字符串最后一位
【5月更文挑战第9天】Java获取字符串最后一位
40 5
|
4天前
|
存储 Java
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
|
5天前
|
Java
Java中两个字符串进行大小比较
Java中两个字符串进行大小比较
19 5
|
6天前
|
存储 Java 索引
【JAVA基础篇教学】第十一篇:Java中字符串操作详解
【JAVA基础篇教学】第十一篇:Java中字符串操作详解
|
6天前
|
Java
代码实例演示Java字符串与输入流互转
代码实例演示Java字符串与输入流互转
10 1
|
6天前
|
传感器 数据采集 网络协议
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
32 4
|
6天前
|
Java
在Java中,如何将字符串转换为浮点数?
【4月更文挑战第30天】在Java中,如何将字符串转换为浮点数?
17 0
|
7天前
|
存储 Java C语言
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
20 0