HDU2072统计文章里单词的个数

Problem Description

lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。

Input

有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output

每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

Sample Input

you are my friend

Sample Output

4

java代码如下:

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public void run(){
        Scanner sc = new Scanner(System.in);
        int[] array = new int[1000];
        Arrays.fill(array,0);
        String input;
        int curResult;
        int count = -1;
        boolean flag = false;
        //while ((sc.hasNextLine()) && ((input = sc.nextLine()).trim().charAt(0) != '#')){
        while (sc.hasNextLine()){
            input = sc.nextLine();
            if(input.equals("#")){
                break;
            }
            curResult = calculate(input);
            count++;

            array[count] = curResult;

        }
        for (int i = 0; i <= count ; i++) {
            System.out.println(array[i]);
        }
    }
    public int calculate(String str) {
        String str1 = str.trim();
        if(str1.length() == 0){
            return 0;
        }
       //在此前面必须要对字符串调用trim()函数
        String[] strArray = str1.split("\\s+");
        Set<String> set = new HashSet<>();

        for (int i = 0; i < strArray.length; i++) {
            if (!set.contains(strArray[i])) {
                set.add(strArray[i]);
            }
        }
//        if(set.isEmpty()){
//            return 0;
//        }
        return set.size();
    }
    public static  void main(String[] args){
        new Main().run();
    }
}

注意事项:
1.输入一连串空格(" ")时calculate()函数应该返回0;

String str1 = str.trim();
        if(str1.length() == 0){
            return 0;
        }

2.输入"#",退出循环,输入结束;

另附一种更为优雅的代码:
代码如下:

import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main1 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String str;
        while(sc.hasNext()) {

            str=sc.nextLine();
            if(str.equals("#")) break;
            String[] strs = str.split(" ");
            Set<String> set = new TreeSet<>();
            for(String s:strs) {

                if(!s.equals(""))
                    set.add(s);
            }

            System.out.println(set.size());
        }
    }
}

你可能感兴趣的:(HDOJ)