字符串加解密(C++牛客网)

解题思路:

(1)依次判断

#include<iostream>
#include<string>

using namespace std;

string encode(string &s) {
    string str;
    for(int i=0;i<s.length();i++) {
        if(islower(s[i])) {
            char temp=(char)(s[i]+1);
            if(temp>'z') str+='A';
            else str+=toupper(temp);
        } else if(isupper(s[i])) {
            char temp=(char)(s[i]+1);
            if(temp>'Z') str+='a';
            else str+=tolower(temp);
        } else if(isdigit(s[i])) {
            if(s[i]=='9') str+='0';
            else str+=(char)(s[i]+1);
        } else str+=s[i];
    }
    return str;
}

string decode(string &s) {
    string str;
    for(int i=0;i<s.length();i++) {
        if(islower(s[i])) {
            s[i]=toupper(s[i]);
            char temp=(char)(s[i]-1);
            if(temp<'A') str+='Z';
            else str+=temp;
        } else if(isupper(s[i])) {
            s[i]=tolower(s[i]);
            char temp=(char)(s[i]-1);
            if(temp<'a') str+='z';
            else str+=temp;
        } else if(isdigit(s[i])) {
            if(s[i]=='0') str+='9';
            else str+=(char)(s[i]-1);
        } else str+=s[i];
    }
    return str;
}

int main() {
    string s1="",s2="";
    while(cin>>s1) {
        cin>>s2;
        cout<<encode(s1)<<endl;
        cout<<decode(s2)<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/coolsunxu/article/details/114869143