题目描述
解题思路
- 首先遍历每一个字符。
- 通过charCodeAt()来判断字符的ASCII码值,如果该值在A-Z之间继续判断-13之后是否还在这个范围,如果还在这个范围直接通过charCodeAt()进行转换字符即可。
- 如果该值不在A-Z之间,直接进行拼接原字符即可。
实现代码
function rot13(str) {
let temp = '';
for (let v of str) {
if (v.charCodeAt() < 65 || v.charCodeAt() > 90) {
temp = temp + v
} else {
if (v.charCodeAt()-13 < 65) {
temp = temp + String.fromCharCode(91 - (65 - v.charCodeAt() + 13))
} else {
temp = temp + String.fromCharCode(v.charCodeAt()-13)
}
}
}
temp
return temp;
}
rot13("SERR CVMMN!");
题目链接
凯撒密码
题目反思
- 学会使用charCodeAt()将字符转换为对应的ASCII码值。
- 学会使用fromCharCode将ASCII码值转换为对应的字符。
- 学会使用new Map(数组),来将一个数组转换为对应的Map,这样比一个一个的添加进Map要方便的多。