POJ 2159
稍加分析后,你会发现,就是统计次数而已
#include <iostream> #include <cstdio> using namespace std; int a[110],b[110]; int aa[30],bb[30]; char cipher[110],m[110]; int main(){ while(scanf("%s",cipher)!=EOF){ scanf("%s",m); if(strlen(cipher)!=strlen(m)){ printf("NO\n"); continue; } memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(aa,0,sizeof(aa)); memset(bb,0,sizeof(bb)); a[0]=26; b[0]=26; for(int i=0;cipher[i]!='\0';i++){ a[aa[cipher[i]-'A']]--; a[(++aa[cipher[i]-'A'])]++; } for(int i=0;m[i]!='\0';i++){ b[bb[m[i]-'A']]--; b[(++bb[m[i]-'A'])]++; } bool flag=true; for(int i=0;i<110;i++){ if(a[i]!=b[i]){ flag=false; break; } } if(flag){ printf("YES\n"); } else{ printf("NO\n"); } } return 0; }