ACM_统计字符串

统计字符串

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

给定n个字符串,统计字符串的个数。
如给定
5
sss
ab
sss
abcd
ab
统计后的结果就是
ab 2
abcd 1
sss 2

Input:

输入包含多组测试数据,每组数据首先给定一个整数n(1<=n<=1000).接下来有n个长度不超过10的字符串只包含大小写字母。

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 }

猜你喜欢

转载自www.cnblogs.com/acgoto/p/9033046.html
今日推荐