统计字符串
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代码:
#include<bits/stdc++.h>
using namespace std;
struct NODE{
int num;
string str;
}node[];
bool cmp(NODE x,NODE y){return x.str<y.str;}
int main()
{
int n,k;string obj;bool flag;
while(cin>>n){
getchar();k=-;
for(int i=;i<n;++i)node[i].num=;
while(n--){
cin>>obj;flag=false;
for(int i=;i<=k;++i){
if(node[i].str==obj){
node[i].num++;flag=true;break;//表示有重复字符串
}
}
if(!flag){node[++k].str=obj;node[k].num++;}//如果没有重复的话,加入结构体数组中去
}
sort(node,node+k+,cmp);//按字典序排序
for(int i=;i<=k;++i)
cout<<node[i].str<<' '<<node[i].num<<endl;
}
return ;
}