题目描述
牛牛截获了一段由凯撒密码加密过的密文,凯撒密码指的是将字符偏移一定的单位,例如若偏移量为2,则a替换为c,b替换为d,c替换为e,...,z替换为b。若加密nowcoder,则密文为pqyeqfgt。现在牛牛发现对方加密包括数字、大写字母、小写字母,即0-9、A-Z、a-z的排列顺序进行偏移,现在牛牛截获了对方的一段密文以及偏移量,你能帮助牛牛破解密文吗。即给定一段密文str和偏移量d,求对应的明文。
示例1
输入
"pqyeqfgt",2
输出
"nowcoder"
示例2
输入
"123ABCabc",3
输出
"yz0789XYZ"
备注:
1≤∣str∣≤1000,1≤d≤61,d为加密时的偏移量
-当时的AC代码
class Solution {
public:
/**
* 解密密文
* @param str string字符串 密文
* @param d int整型 偏移量
* @return string字符串
*/
string decode(string str, int d) {
string s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
// write code here
string ans;
for(char c : str) {
int pos = s.find(c);
int t = pos - d;
if (t < 0) {
//cout << s[61-t];
ans += s[62+t];
} else {
//cout << s[t];
ans += s[t];
}
}
return ans;
}
};