题解 | #字符串加密#
字符串加密
http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
mapped的映射数组,一个,标注重复的note,可以用数组,也可以用set,不过把key添加到mapped的数组时一定要有个条件,就是之前没被添加。
#include <algorithm>
using namespace std;
int main() {
string key,str;
while(getline(cin,key)&&getline(cin,str)){
string mapped,out;
int note[26]={0};
char temp;
for(int i = 0;i<key.size();i++){
temp = toupper(key[i]);
if(note[temp-'A']==0){//这里判断有没有添加过,有的话就既不加到map也不把note置1了
note[temp-'A']=1;
mapped+=temp;
}
}
for(int j = 0;j<26;j++){
if(note[j]==0){
temp=j+'A';
mapped+=temp;
}
}//for补齐剩余字母
for(int m = 0;m<str.size();m++){
if(isupper(str[m])){
out+=mapped[str[m]-'A'];
}
else{//这里判断小写,不过题目的样例没有其它符号,这里可以简单点
out+=tolower(mapped[str[m]-'a']);
}
}
cout<<out;
}
}