题解 | #字符串加解密#

字符串加解密

http://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a

#include <bits/stdc++.h>

using namespace std;

//encoder
void encoder(string str){
    for(int i = 0; i < str.size(); i++){
        if(isalpha(str[i])){
            if(str[i] >= 'a' && str[i] <= 'z'){//小写字母
                if(str[i] == 'z') str[i] = 'A';
                else{
                    str[i] = str[i] - 'a' + 'A' + 1;//变换大小写同时用后一个字母替换
                }
            }
            else{
                if(str[i] == 'Z') str[i] = 'a';
                else{
                    str[i] = str[i] - 'A' + 'a' + 1;//变换大小写同时用后一个字母替换
                }
            }
        }
        else if(isdigit(str[i])){
            if(str[i] == '9') str[i] = '0';
            else{
                str[i] = str[i] + 1;
            }
        }
    }
    
    cout << str << endl;
}

//decoder
void decoder(string str){
    for(int i = 0; i < str.size(); i++){
        if(isalpha(str[i])){
            if(str[i] >= 'a' && str[i] <= 'z'){//小写字母
                if(str[i] == 'a') str[i] = 'Z';
                else{
                    str[i] = str[i] - 'a' + 'A' - 1;//变换大小写同时用后一个字母替换
                }
            }
            else{
                if(str[i] == 'A') str[i] = 'z';
                else{
                    str[i] = str[i] - 'A' + 'a' - 1;//变换大小写同时用后一个字母替换
                }
            }
        }
        else if(isdigit(str[i])){
            if(str[i] == '0') str[i] = '9';
            else{
                str[i] = str[i] - 1;
            }
        }
    }
    
    cout << str << endl;
}

int main(){
    string yao_jia_mi_str = "";
    cin >> yao_jia_mi_str;
    string jia_guo_mi_str = "";
    cin >> jia_guo_mi_str;
    
    encoder(yao_jia_mi_str);
    decoder(jia_guo_mi_str);
    
    return 0;
}
华为题库题解 文章被收录于专栏

牛客华为题库的题解

全部评论

相关推荐

牛客963010790号:一般是hr拿着老板账号在招人不是真是老板招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务