A. 【NOIP2018 模拟赛day1】古代密码

这道题一开始读的时候以为是深搜,仔细一想可以发现-----尼玛这道题为什么需要去判断顺序呢?(是不是发现自己被坑了?)

其实这道题的实质就是模拟判断一下字母就可以了。

直接上代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
string a,b;//原文加翻译
int time_a[1001];//统计原文中出现的字母的次数
int time_b[1001];//统计翻译中出现的字母的次数
int main(){
	cin>>a;//cin可以直接读入字符串
	cin>>b;
	
	if(a.length()!=b.length()){//如果他们的长度都不相等的话就直接判断为错了。
		cout<<"NO";
		return 0;
	}
	
	int len=a.length();//用一个变量来存储长度
	for(int i=0;i<len;i++)//来判断出现的字母的次数
	{
		time_a[a[i]-'A']++;//因为是字符,所以要减去一个A来表示
		time_b[b[i]-'A']++;
	}
	
	sort(time_a,time_a+26);//字母有26个
	sort(time_b,time_b+26);
	
	for(int i=0;i<26;i++){//如果次数不同的话就错了
		if(time_a[i]!=time_b[i]){
			cout<<"NO";
			return 0;
		}
	}
	
	cout<<"YES";
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41734244/article/details/79834350