统计字符串
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 }