题解 | #字符串加解密#

字符串加解密

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;
}
全部评论

相关推荐

头像
昨天 20:19
已编辑
门头沟学院 人工智能
本文略长,献给身处双非、学院本科的低年级依旧陷入迷茫的同学,一个参考。夹杂强烈主观因素,若观点不同,仅当笑料。近日,工作之余的午休时间给母校的学弟学妹进行了宣讲,同时也接受了牛客的访谈,不约而同的触发了两个关键词考研,就业。现象今年和去年,认识的学弟学妹,来自知某、抖某、牛客等系列的学弟学妹,这次宣讲,约有20个学弟学妹来加了我的联系方式,向我取经,聊聊未来,聊聊想法。我这里简单概括一下。1.现在很迷茫,大方向摇摆就业还是考研,但是倾向考研。小方向摇摆竞赛和项目,不知道怎么去做,不知道怎么开始。2.考研的直接目的绝大多数都是为了(混)学历,根本目的就是提高就业竞争力。3.我把他们都拉了个群,在...
牛客85294058...:“私聊能够滔滔不绝,而拉了一个小群之后就完全一声不吭”个人观点这跟从小到大“不要浪费大家时间”的社会环境有关:个人化的提问,如果你上学时有留心、或者参加QA环节多,会注意到这种做法经常是被人骂的。要营造让大家开口的氛围和做出欢迎讨论的议题设置还是比较难的,期待方法探索。
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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