33,008
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const char mapp[26] = {'2','2', '2', '3', '3', '3', '4', '4', '4', '5', '5', '5', '6', '6', '6', '7', '@', '7', '7', '8', '8', '8', '9', '9', '9', '@'};
void deal_str(string &s){ //处理字符串
for(int i=0;i<(int)(s.size());++i){
if(s[i]>='0'&&s[i]<='9'){}
else
if(s[i]>='A'&&s[i]<='Z'){
s[i]=mapp[s[i]-'A'];
if(s[i]=='@') {
s.erase(i,1);
--i;
}
}
else{
s.erase(i,1);
--i;
}
}
s.insert(3,1,'-');
}
int main(){
int n,i,num=1,j=0,x=0,sign=0;
cin>>n;
string *str=new string[n];
for(i=0;i<n;++i)
cin>>str[i];
for(i=0;i<n;++i)
deal_str(str[i]); //处理字符串
sort(str,str+n); //排序
for(i=0;i<n-1;){ //计数输出
num=1;
for(j=i+1;j<n;++j){
if(str[i]==str[j]){
++num;
x=j;
}
}
if(num>1)
sign=1;
i=x;
cout<<str[i]<<' '<<num<<endl;
}
else ++i;
}
if(sign==0) cout<<"No duplicates."<<endl;
delete []str;
return 0;
}
#include <algorithm>
#include <stdio.h>
#include <cstring>
#include <stdlib.h>
using namespace std;
const char mapp[26] = {'2','2', '2', '3', '3', '3', '4', '4', '4', '5', '5', '5', '6', '6', '6', '7', '@', '7', '7', '8', '8', '8', '9', '9', '9', '@'};
typedef struct my_str{
char ch[100];
int len;
}my_str,*my_string;
void deal_str(my_str &s,my_str &s1,int *t,int o){ //字符处理
int j=0;
for(int i=0;i<s.len&&j<8;++i){
if((s.ch)[i]>='0'&&(s.ch)[i]<='9'){
(s1.ch)[j++]=(s.ch)[i];
}
else if((s.ch)[i]>='A'&&(s.ch)[i]<='Z'){
if(mapp[(s.ch)[i]-'A']!='@')
(s1.ch)[j++]=mapp[(s.ch)[i]-'A'];
}
}
s1.ch[8]='\0';
t[o]=atoi(s1.ch);
}
int main(){
int n,num=1,j,x,sign=0;
my_string s,s1;
scanf("%d",&n);
s=new my_str[n];
s1=new my_str[n];
int *t=new int[n];
for(int i=0;i<n;++i){ //初始化
scanf("%s",s[i].ch);
s[i].len=(int)(strlen(s[i].ch));
}
for(int i=0;i<n;++i) //处理字符串
deal_str(s[i],s1[i],t,i);
sort(t,t+n);//排序
for(int i=0;i<n-1;){
num=1;
for(j=i+1;j<n;++j){
if(t[i]==t[j]){
++num;
x=j;
}
}
if(num>1){
sign=1;
printf("%03d-%04d %d\n",t[i]/10000,t[i]%10000,num);
i=x;
}
else ++i;
}
if(sign==0) printf("No duplicates.\n");
delete []s;delete []s1;delete []t;
return 0;
}