Uva-1339 Ancient Cipher

Uva-1339题目链接

题意
对比两串字符串,如果一字符串内所有字母与另一字符串的字母是一一映射替换的,且相同字母替换的字母也相同,如果是就输出YES,否则输出NO

过程
这个题目表面上是字符匹配的问题,其实只是排序问题,将字符串的相同的字母进行计数存入到数组中,只要保证相同的字母个数相同就可以判断:一字符串内所有字母与另一字符串的字母是一一映射替换的,且相同字母替换的字母也相同,这里就对字符的ASCLL数值进行操作,代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char str[105],str1[105];
int main()
{
    int k,a[26],b[26],flag;
    while(gets(str))
    {
        flag=1;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        int len=strlen(str);
        for(int i=0;i<len;i++)
        {
            k=str[i]-'A';
            a[k]++;
        }
        gets(str1);
        for(int i=0;i<len;i++)
        {
            k=str1[i]-'A';
            b[k]++;
        }
        sort(a,a+26);//排序
        sort(b,b+26);
        for(int i=0;i<26;i++)
        {
            if(a[i]!=b[i])
                flag=0;
        }
        if(flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

代码中使用了sort函数,这个函数可以进行快速排列,有关sort函数会单独写一篇博客后期补上链接

注: 片段代码或者语言如有错误望谅解并请指出。

猜你喜欢

转载自blog.csdn.net/qq_36428171/article/details/78311651