题解 | #字符串加解密#

字符串加解密

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

#include <iostream>
using namespace std;
#include <cctype>
string encrypt(string a) {
    string b = a;
    int num;
    char l;
    for (int i = 0; i < a.size(); i++) {
        if (isdigit(a[i])) {
            num = a[i] - '0';
            if (num <= 8) {
                num++;
            } else if (num == 9) {
                num = 0;
            }

            b[i] = num + '0';
        } else if (islower(a[i])) {
            if (a[i] != 'z') {
                b[i] = toupper((a[i] + 1));
            } else {
                b[i] = 'A';
            }
        } else if (isupper(a[i])) {
            if (a[i] != 'Z') {
                b[i] = tolower((a[i] + 1));
            } else {
                b[i] = 'a';
            }
        } else {
            b[i] = a[i];
        }
    }
    return b;
}

string decrypt(string a) {
    string b = a;
    int num;
    char l;
    for (int i = 0; i < a.size(); i++) {
        if (isdigit(a[i])) {
            num = a[i] - '0';
            if (num > 0) {
                num--;
            } else if (num == 0) {
                num = 9;
            }

            b[i] = num + '0';
        } else if (islower(a[i])) {
            if (a[i] != 'a') {
                b[i] = toupper((a[i] - 1));
            } else {
                b[i] = 'Z';
            }
        } else if (isupper(a[i])) {
            if (a[i] != 'A') {
                b[i] = tolower((a[i] - 1));
            } else {
                b[i] = 'z';
            }
        } else {
            b[i] = a[i];
        }
    }
    return b;
}

int main() {
    string a;
    string b;
    cin >> a;
    cout << encrypt(a) << endl;
    cin >> b;
    cout << decrypt(b) << endl;
}

cctype的使用

华为机试刷题记录 文章被收录于专栏

记录一下手打代码的解题思路方便复习

全部评论

相关推荐

zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务