题意解释
这道题读题的时候需要注意的是
1. 字母可以转成不同于自己的其他大写字母。
2. 转换完成后可以随意换位置。
所以,我们不能想着用ASCII码值进行转换 ,把译码和原文的字母出现的次数进行统计对比。
收获
自己本身的AC太过于“面条式了”,选的别人的AC代码。这个代码我学到了,用memset来初始化数组,以及简历字母表这种方式来处理这种问题。
AC代码
#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const char *s="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const int maxn=26;
int a[maxn],b[maxn];
string maze;
string org;
int main()
{
cin>>maze>>org;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
if(maze.length()!=org.length()) printf("NO\n");
else {
for(int i=0;i<maxn;i++)
{
for(int j=0;j<org.length();j++)
{
if(s[i]==org[j]) a[i]++;
if(s[i]==maze[j]) b[i]++;
}
}
sort(a,a+maxn);
sort(b,b+maxn);
int t=1;
for(int i=0;i<maxn;i++)
if(a[i]!=b[i])
{
t=0;
break;
}
if(t) printf("YES\n");
else printf("NO\n");
}
return 0;
}
网友评论