Uva-1339 Ancient Cipher

来源:互联网 发布:moment.js 显示中文 编辑:程序博客网 时间:2024/05/22 12:57

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函数会单独写一篇博客后期补上链接

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

原创粉丝点击