题解 | #字符串加解密#
字符串加解密
https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
#include <cctype>
#include <iostream>
using namespace std;
string encode(string str) {
string res = str;
for (int i = 0; i < str.length(); ++i) {
if (isalpha(str[i]) && isupper(str[i])) {
res[i] = 'a' + (((res[i] - 'A') + 1) % 26);
} else if (isalpha(str[i]) && islower(str[i])) {
res[i] = 'A' + (((res[i] - 'a') + 1) % 26);
}else if(isdigit(str[i])){
res[i] = '0' + (((res[i] - '0') + 1) %10) ;
}else{
res[i]= str[i];
}
}
return res;
}
string decode(string str) {
string res = str;
for (int i = 0; i < str.length(); ++i) {
if (isalpha(str[i]) && isupper(str[i])) {
res[i] = 'a' + (((26+res[i] - 'A') - 1) % 26);
} else if (isalpha(str[i]) && islower(str[i])) {
res[i] = 'A' + (((26+res[i] - 'a') - 1) % 26);
}else if(isdigit(str[i])){
res[i] = '0' + (((10+res[i] - '0') - 1) %10) ;
}else{
res[i]=str[i];
}
}
return res;
}
int main() {
string str1, str2;
// string ans1 = "", ans2 = "";
cin >> str1 >> str2;
cout<<encode(str1)<<endl;
cout<<decode(str2)<<endl;
}
// 64 位输出请用 printf("%lld")
#23届找工作求助阵地#
小天才公司福利 1222人发布