华为机试 字符串加解密

#include<iostream>
#include <vector>
#include "bits/stdc++.h"
using namespace std;

char jiami(char s){
    if(s >= 'a'&&s < 'z'){return char(s-31);}
    else if(s == 'z') return 'A';
    else if(s >= 'A'&&s < 'Z') return char(s+33);
    else if(s == 'Z') return 'a';
    else if(s >= '0'&&s < '9'){ return char(s+1);}
    else if(s == '9') return '0';
    return ' ';          //需要加默认返回值,否则编译器会报错
}

char jiemi(char s){
    if(s > 'A'&&s <= 'Z'){return char(s+31);}
    else if(s == 'A') return 'z';
    else if(s > 'a'&&s <= 'z')return char(s-33);
    else if(s == 'a') return 'Z';
    else if(s > '0'&&s <= '9'){ return char(s-1);}
    else if(s == '0') return '9';
    return ' ';
}



int main()
{
//    unordered_map<char,char>mpchar;
//    for(char c='a';c <= 'z';c++){
//        if(c != 'z'){mpchar[c] = char(c-31);}
//        else mpchar[c] = 'A';
//    }
//    for(char c='0';c <= '9';c++){
//        if(c!='9'){mpchar[c] = char(c+1);}
//        else mpchar[c] = '0';
//    }
//
//    for(auto it = mpchar.begin();it != mpchar.end();it++){
//        cout << it->first << " " << it->second << endl;
//    }

    string s1,s2;

    while(cin >> s1 >> s2){
        string res = "";
        for(int i=0;i < s1.size();i++){
            res += jiami(s1[i]);
        }
        cout << res << endl;
        res = "";
        for(int i=0;i < s2.size();i++){
            res += jiemi(s2[i]);
        }
        cout << res << endl;
    }
    return 0;
}

题目描述

1、对输入的字符串进行加解密,并输出。

2、加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

3、解密方法为加密的逆过程。

本题含有多组样例输入。

输入描述:

输入说明
输入一串要加密的密码
输入一串加过密的密码

输出描述:

输出说明
输出加密后的字符
输出解密后的字符

示例1

输入

复制
abcdefg
BCDEFGH

输出

复制
BCDEFGH
abcdefg
原文地址:https://www.cnblogs.com/cunyusup/p/14267070.html