Ancient Cipher POJ-2159 (排序)
思路:关键在于这句话:
Substitution cipher changes all occurrences of each letter to some
other letter. Substitutes for all letters must be different. For some
letters substitute letter may coincide with the original letter.
意思就是每个字母可以任意替换成其他字母,但是每个字母所替换的字母必须不同。
只要字母个数相对相等即可,所以可以将字母出现次数排序,然后比较是否完全相等。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define il inline
string a,b;
int c[26],d[26];
int main(){
cin>>a>>b;int n=a.size(),m=b.size();
for(int i=0;i<n;i++){
c[a[i]-'A']++,d[b[i]-'A']++;
}
sort(c,c+26),sort(d,d+26);
for(int i=0;i<26;i++){
if(c[i]!=d[i]) return puts("NO"),0;
}
puts("YES");
return 0;
}