题解
2024-06-02 14:58:53
发布于:上海
104阅读
0回复
0点赞
在题解之前先声明:导入了string set map的库
加入团队吧
#include<iostream>
#include<string>
#include<set>
#include<map>
using namespace std;
string s1,s2,s3;
set<char> alphas;
map<char,char> codes;
int check_duplicate(string s1,string s2){
for(int i=0;i<s1.size();i++)for(int j=0;j<s1.size();j++)if(s1[i]==s1[j]&&s2[i]!=s2[j])return 0;
return 1;
}
int check_length(string s){
for(int i=0;i<s.size();i++)alphas.insert(s[i]);
return alphas.size()==26;
}
void dict_init(string key,string value){for(int i=0;i<key.size();i++)codes[key[i]]=value[i];}
int main(){
cin>>s1>>s2>>s3;
if(!check_duplicate(s1,s2))cout<<"Failed"<<endl;
else if(!check_length(s2))cout<<"Failed"<<endl;
else{
dict_init(s1,s2);
for(int i=0;i<s3.size();i++)s3[i]=codes[s3[i]];
cout<<s3<<endl;
}
return 0;
}
全部评论 4
是不是只要导入map就可以了?就是检测长度一起放入map,检查的check_duplicate先进行,再dict_init即可?
2024-01-13 来自 上海
1谁的地方
2026-03-24 来自 浙江
0wow

2025-05-24 来自 广东
0代码就28行
2024-01-12 来自 上海
0我的26行
#include<iostream> #include<string> #include<algorithm> using namespace std; char ysb[27]={}; int tong1[27]={},tong2[27]={}; string a,b,c; int main(){ cin>>a>>b>>c; for(int i=0;i<a.size();i++)tong1[a[i]-'A'+1]++,tong2[b[i]-'A'+1]++;//统计A、B中每个字符出现次数:桶 for(int i=1;i<=26;i++)//如果输入的B不包含全部26字符输出Failed if(tong2[i]==0){ cout<<"Failed"; return 0; } sort(tong1+1,tong1+27);//排序两个桶↓ sort(tong2+1,tong2+27);// ↓ for(int i=1;i<=26;i++) //是为了统计名文和密文是否一一对应! if(tong1[i]!=tong2[i]){//不一一对应输出Failed cout<<"Failed"; return 0; } for(int i=0;i<a.size();i++) ysb[a[i]-'A'+2]=b[i];//制造映射表 for(int i=0;i<c.size();i++) for(int j=1;j<27;j++) if(c[i]==char(j+64)) cout<<ysb[j+1];//在映射表中提取字符 return 0; }2026-07-25 来自 河南
1还不用map
2026-07-25 来自 河南
0bur现在还在?
2026-07-26 来自 河南
0














有帮助,赞一个