这道题一开始读的时候以为是深搜,仔细一想可以发现-----尼玛这道题为什么需要去判断顺序呢?(是不是发现自己被坑了?)
其实这道题的实质就是模拟判断一下字母就可以了。
直接上代码:
#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; }