#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
int main()
{
int i, a[30], b[30];
std::string s, t;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
std::cin >> s >> t;
for(i=0; s[i]; i++)
a[s[i]-'A']++;
for(i=0; t[i]; i++)
b[t[i]-'A']++;
std::sort(a, a+26);
std::sort(b, b+26);
for(i=0; i<26; i++)
{
if(a[i] != b[i])
break;
}
if(i==26)printf("YES\n");
else printf("NO\n");
return 0;
}
WA代码,两步可同时进行,情况一可随意映射,而不是有规律的
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp(const void* a,const void* b)
{
return *(char *)a-*(char *)b;
}
int main()
{
int i, j, flag=1;
char a[101];
char b[101];
char c[101];
while(gets(a)){
gets(b);
int len_a=strlen(a);
int len_b=strlen(b);
if(len_a != len_b){
printf("NO");
return 0;
}
j = b[0]-a[0];
//两个字符数组按ASCII码排序
//情况二
qsort(a,len_a,sizeof(char),cmp);
qsort(b,len_a,sizeof(char),cmp);
if(strcmp(a,b)==0) {printf("YES"); return 0;}
//情况一
// for(j=0; j<26; j++)
{
printf("%d\n", j);
for(i=0; i<len_a; i++)
{
c[i]=(a[i]-'A'+j) % 26+'A';
// a[i] += j;
}
qsort(c,len_a,sizeof(char),cmp);
qsort(b,len_a,sizeof(char),cmp);
if(strcmp(c,b)==0) {printf("YES\n");}
else printf("NO\n");
}
}
return 0;
}