Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
Author
Lily
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
for(;;){
String s=reader.nextLine();
if(s.equals("#")){
break;
}
s=s+" ";
map map=new map();
boolean is=false;
String ss="";
int sum=0;
for(int n=0;n<s.length();n++){
if(s.charAt(n)==' '){
if(is){
sum+=put(map,ss);
//System.out.println(ss);
is=false;
}
}
else{
if(is){
ss+=String.valueOf(s.charAt(n));
}
else{
ss=String.valueOf(s.charAt(n));
is=true;
}
}
}
System.out.println(sum);
}
}
public static int put(final map map,String s){
map maap=map;
boolean is=false;
for(int n=0;n<s.length();n++){
int a=s.charAt(n)-'a';
if(maap.child[a]==null){
maap.child[a]=new map();
}
maap.num--;
maap=maap.child[a];
if(maap.num!=0){
is=false;
}
else{
is=true;
}
maap.num++;
}
if(is){
return 1;
}
else{
return 0;
}
}
}
class map{
int num ;
map child[];
map(){
child=new map[26];
num = 0;
}
}