统计字符串
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
给定n个字符串,统计字符串的个数。
如给定
5
sss
ab
sss
abcd
ab
统计后的结果就是
ab 2
abcd 1
sss 2
Output:
对于每组数据,输出字符串的统计结果,按字典序的方式给出结果,见样例。
Sample Input:
3
abc
cde
abc
Sample Output:
abc 2
cde 1
解题思路:水题!!!每输入一个字符串就查看之前有没有重复的,有的话,对应的计数器加1,否则就加入到结构体数组中去,最后按字典序排序即可,水过!
AC代码:
1 #include<bits/stdc++.h>
2 using namespace std;
3 struct NODE{
4 int num;
5 string str;
6 }node[1005];
7 bool cmp(NODE x,NODE y){return x.str<y.str;}
8 int main()
9 {
10 int n,k;string obj;bool flag;
11 while(cin>>n){
12 getchar();k=-1;
13 for(int i=0;i<n;++i)node[i].num=0;
14 while(n--){
15 cin>>obj;flag=false;
16 for(int i=0;i<=k;++i){
17 if(node[i].str==obj){
18 node[i].num++;flag=true;break;//表示有重复字符串
19 }
20 }
21 if(!flag){node[++k].str=obj;node[k].num++;}//如果没有重复的话,加入结构体数组中去
22 }
23 sort(node,node+k+1,cmp);//按字典序排序
24 for(int i=0;i<=k;++i)
25 cout<<node[i].str<<' '<<node[i].num<<endl;
26 }
27 return 0;
28 }