题解 | #字符串加密#

字符串加密

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;
    }

}
全部评论

相关推荐

offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务