题目描述
HH公司(huge-hard)最近计划出品一个字处理软件。软件基本功能已经完成,但还缺少一个单词统计的功能,你的任务就是为该公司写一段程序,完成统计功能。
需要统计的信息有两项:出现单词的个数和单个单词出现的次数。
输入
输入为一行字符串,即要统计的文本。
输出
输出由若干行组成,第一行是一个整数,表示单词的个数,从第二行开始,每行由字符串、冒号、整数组成,其中字符串是一个出现在文本中的单词,整数则是该单词在文本中出现的次数。
样例输入
1
| to know everything is to know nothing
|
样例输出
1 2 3 4 5 6
| 7 everything:1 is:1 know:2 nothing:1 to:2
|
题解
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include<bits/stdc++.h> using namespace std; string s[1000]; string t; string k; int n,cnt; int main(){ n=0; while(cin>>t)s[n++]=t; sort(s,s+n); cout<<n<<endl; k=s[0]; cnt=1; for(int i=1;i<n;i++){ if(s[i]==k)++cnt; else { cout<<k<<":"<<cnt<<endl; k=s[i]; cnt=1; } } cout<<k<<":"<<cnt<<endl; return 0; }
|
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import java.util.Map; import java.util.Scanner; import java.util.TreeMap;
public class Main { static Scanner cin = new Scanner(System.in);
public static void main(String[] args) { Map<String, Integer> map = new TreeMap<>(); int cnt = 0; while (cin.hasNext()) { String word = cin.next(); ++cnt; if (!map.containsKey(word)) { map.put(word, 1); } else { int old = map.get(word); map.put(word, old + 1); } } System.out.println(cnt); for (String key : map.keySet()) { System.out.println(key + ":" + map.get(key)); }
} }
|