69,368
社区成员
发帖
与我相关
我的任务
分享
if ( !strcmp(str[i],str[j]) )
count++;
//strcmp()函数是比较字符串是否相同。而你比较的是字符
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int compare( const void *a,const void *b)
{
return strcmp( (char *)a,(char *)b );
}
char str[100000][8];
char into[27]="22233344455566677778889999";
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int n,i,j,k;
char a[20];
cin>>n;
for (i=0;i<n;i++)
{
cin>>a;
for ( k=j=0;j<strlen(a);j++,k++ )
{
if ( a[j]>='0' && a[j]<='9' )
str[i][k]=a[j];
else if ( a[j]>='A' && a[j]<='Z' )
str[i][k]=into[ a[j]-'A' ];
else
k--;
}
}
qsort(str,n,8,compare);
int t=0;
for (i=0;i<n-1;)
{
int count=1;
for (j=i+1;j<n;j++)
{
if ( !strcmp(str[i],str[j]) )
count++;
else
break;
}
if ( count>=2 )
{
cout<<str[i][0] <<str[i][1] <<str[i][2] <<"-"<< str[i]+3<<" " <<count <<endl;
t++;
}
i=j;
}
if( !t )
cout<<"No duplicates."<<endl;
return 0;
}