UVa 1339 Ancient Cipher --- 水题

  UVa 1339

  题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同

  解题思路:字母可以重排,那么次序便不重要,可以分别统计两个字符串中的各个字母出现的次数,得到两个cnt[26]数组,

       又由于可以进行映射,则可以直接对两个数组进行排序后判断是否相等(相当于原来相等的值的两个地方做映射)

/* UVa 1339 Ancient Cipher --- 水题 */
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; char a[], b[];
int cnt1[], cnt2[]; int main()
{
#ifdef _LOCAL
freopen("D:\\input.txt", "r", stdin);
#endif while (scanf("%s%s", a, b) == ){
memset(cnt1, , sizeof cnt1);
memset(cnt2, , sizeof cnt2);
int len1 = strlen(a);
int len2 = strlen(b); //0-25记录A-Z
for (int i = ; i < len1; ++i){
++cnt1[a[i] - 'A'];
++cnt2[b[i] - 'A'];
} sort(cnt1, cnt1 + );
sort(cnt2, cnt2 + ); bool flag = ;
for (int i = ; i < ; ++i){
if (cnt1[i] != cnt2[i]){
flag = ;
break;
}
}
printf("%s\n", flag ? "YES" : "NO");
} return ;
}
上一篇:UVa 1225 Digit Counting --- 水题


下一篇:初识 MongoDB,MongoDB 的安装运行