您的位置:首页 > 其它

Uva-1339 Ancient Cipher

2017-10-22 18:02 113 查看
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函数会单独写一篇博客后期补上链接

注: 片段代码或者语言如有错误望谅解并请指出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息