题解 | #字符串加解密#

字符串加解密

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

我真是废物,这道题居然做了一个小时,嚓

主要是来来回回求模运算很绕

其实针对极端情况,直接赋值就好了,不需要管太多

#include <bits/stdc++.h>
using namespace std;
//大小写字母之间数字差32
// A-Z 65~90
// a-z 97~122
// '0'~'9' 48-57


// 加密
void secretString(string s) {
    int size = s.size();
    //转换为大写
    for(int i = 0; i < size; i++) {
        // 小写字母变成大写
        if(s[i] >= 'a' && s[i] <= 'z') {
            if(s[i] == 'z') {
                s[i] = 'A';
            }
            else {
                s[i] = (s[i] - 32 + 1) % 65 + 'A';
            }
        }
        // 大写字母变成小写
        else if(s[i] >= 'A' && s[i] <= 'Z') {
            if(s[i] == 'Z') {
                s[i] = 'a';
            }
            else {
                s[i] = (s[i] + 32 + 1) % 97 + 'a';
            }
        }
        // 数字
        else if(s[i] >= '0' && s[i] <= '9') {
            if(s[i] == '9') {
                s[i] = '0';
            }
            else {
                s[i] = (s[i] + 1) % 48 + '0';
            }
        }
    }
    for(int i = 0; i < size; i++) {
        cout << s[i];
    }
    cout << endl;
}

// 解密
void unsecretString(string s) {
    int size = s.size();
    //转换为大写
    for(int i = 0; i < size; i++) {
        // 小写字母变成大写
        if(s[i] >= 'a' && s[i] <= 'z') {
            if(s[i] == 'a') {
                s[i] = 'Z';
            }
            else {
                s[i] = (s[i] - 32 - 1) % 65 + 'A';
            }
        }
        // 大写字母变成小写
        else if(s[i] >= 'A' && s[i] <= 'Z') {
            if(s[i] == 'A') {
                s[i] = 'z';
            }
            else {
                s[i] = (s[i] + 32 - 1) % 97 + 'a';
            }
        }
        // 数字
        else if(s[i] >= '0' && s[i] <= '9') {
            if(s[i] == '0') {
                s[i] = '9';
            }
            else {
                s[i] = (s[i] - 1) % 48 + '0';
            }
        }
    }
    for(int i = 0; i < size; i++) {
        cout << s[i];
    }
    cout << endl;
}




int main()
{
    string s1;
    string s2;
    cin >> s1;
    cin >> s2;
    secretString(s1);
    unsecretString(s2);
    return 0;
}
全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
羊村懒哥:学历基本到点,考个研吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务