![]()
POJ1002
1
#include <iostream>
2
#include <cstring>
3
#include <stdlib.h>
4
using namespace std;
5![]()
6
int cmp(const void *a,const void *b)
7![]()
![]()
{
8
return strcmp((char *)a,(char *)b);
9
}
10![]()
11
int main()
12![]()
![]()
{
13
char map[27]="22233344455566677778889999";
14
char a[100000][9];
15
char temp[1000];
16
int n,i,j;
17
bool flag=true;
18
cin>>n;
19
for(i=0;i<n;i++)
20![]()
{
21
int k=0;
22
cin>>temp;
23
for(j=0;temp[j]!='\0';j++)
24![]()
{
25
if(k==3)
26![]()
{
27
a[i][k++]='-';
28
// continue;
29
}
30
if(temp[j]=='-')
31
continue;
32
else
33
if(temp[j]>='A'&&temp[j]<='Z')
34
a[i][k++]=map[temp[j]-'A'];
35
else
36
a[i][k++]=temp[j];
37
}
38
a[i][k]='\0';
39![]()
40
41
}
42
qsort(a,n,9,cmp);
43![]()
44
i=0;
45
while(i<n)
46![]()
{
47
j=i;
48
i++;
49
while(strcmp(a[i],a[j])==0)i++;
50
if(i-j>1)
51![]()
{
52
cout<<a[j]<<" "<<i-j<<endl;
53
flag=false;
54
}
55
56
}
57
if(flag)
58
cout<<"No duplicates"<<endl;
59![]()
60![]()
61
return 0;
62
}
犯了一个严重的低级错误,忘了输出
No duplicates.
额。。。代码好像贴错了
少了一个.
对于在一群字符串中找到相同的字符串,并按字典顺序输出该字符串和其重复次数,可以参考这段代码
qsort(a,n,9,cmp);
i=0;
while(i<n)
{
j=i;
i++;
while(strcmp(a[i],a[j])==0)i++;
if(i-j>1)
{
cout<<a[j]<<" "<<i-j<<endl;
flag=false;
}
}
先将所有字符串排序,然后看相邻的有多少个相同的字符串,然后直接输出了。
不过对于将重复的字符串按照重复的次序输出,这个目前思绪还比较乱,最好来个人给俺指点一下