#include <cstring> #include <iostream> #include <algorithm> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string str1,str2; cin>>str1>>str2; char a[27]; bool b[27]; memset(b, 0, sizeof b); int cnt=0; string s1,s2; //jingen for(int i=0;i<str1.length();i++) { int j=str1[i]-'a'; if(!(b[j])) { b[j] = true; a[cnt++]=str1[i]; } } for(int i=0;i<27;i++) { if(!b[i]) { a[cnt++]=char(i+'a'); } } for(int i=0;i<str2.length();i++) { cout<<a[str2[i]-'a']; } return 0; }
由题目可知,是对字符串进行加密,首先处理str1 对其进行去重(由于数据范围较小直接用for循环,可用set直接去重),后补齐未出现的字母,将这串密码用数组a储存,(按ascii码进行存储),后读取需加密的字符串,根据acsii码对映a数组的位置。参与链接