UVa 1339 Ancient Cipher --- 水题

Posted tan90丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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[105], b[105];
int cnt1[30], cnt2[30];

int main()
{
#ifdef _LOCAL
    freopen("D:\\\\input.txt", "r", stdin);
#endif

    while (scanf("%s%s", a, b) == 2){
        memset(cnt1, 0, sizeof cnt1);
        memset(cnt2, 0, sizeof cnt2);
        int len1 = strlen(a);
        int len2 = strlen(b);

        //0-25记录A-Z
        for (int i = 0; i < len1; ++i){
            ++cnt1[a[i] - \'A\'];
            ++cnt2[b[i] - \'A\'];
        }

        sort(cnt1, cnt1 + 26);
        sort(cnt2, cnt2 + 26);

        bool flag = 1;
        for (int i = 0; i < 26; ++i){
            if (cnt1[i] != cnt2[i]){
                flag = 0;
                break;
            }
        }
        printf("%s\\n", flag ? "YES" : "NO");
    }

    return 0;
}
View Code

 

以上是关于UVa 1339 Ancient Cipher --- 水题的主要内容,如果未能解决你的问题,请参考以下文章

UVa 1339 Ancient Cipher

Uva 1339:Ancient Cipher

uva1339Ancient Cipher

uva 1339 Ancient Cipher

UVA 1586Ancient Cipher

poj 2159 D - Ancient Cipher 文件加密