单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 56492 Accepted Submission(s): 14116
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
给出两种方法,第一种是使用java函数库里的方法,第二种是自己写方法来判断,当然,还是推荐第一种
import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main{ private static Scanner scanner; public static void main(String[] args) { scanner = new Scanner(System.in); while (scanner.hasNext()) { String string = scanner.nextLine(); // 防护 string = string.trim();// 去掉前后空格
/*if (string == null || string.length() == 0) {continue;}*/if (string.equals("#")) {break;}Set<String> set = new HashSet<String>();String[] strings = string.split(" ");for (int i = 0; i < strings.length; i++) {String s = strings[i].trim();if (s != null && s.length() != 0) {/*if(s.contains("#")){//并不是有#就退出break;}*/set.add(strings[i]);}}System.out.println(set.size());}}}//并不需要考虑空回车问题,尽管输出0就是了,这里我还真想多了
import java.util.Scanner; //另一种 (AC) public class Main{ public static void main(String[] args) { @SuppressWarnings("resource") Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String str = sc.nextLine(); if (str.equals("#")) { break; } String[] strs = str.split(" "); int count = 0; for (int i = 0; i < strs.length; i++) { boolean boo = true;//用来判断这个单词是不是最后一次出现 if (strs[i].equals("")) { continue; } for (int j = i+1; j < strs.length; j++) { if (strs[i].equals(strs[j])) { boo = false; } } if (boo) { count++; } } System.out.println(count); } } }