题目链接

要求

凯撒密码

(让上帝的归上帝,凯撒的归凯撒)

下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。

移位密码也就是密码中的字母会按照指定的数量来做移位。

一个常见的案例就是ROT13密码,字母会移位13个位置。由’A’ ↔ ‘N’, ‘B’ ↔ ‘O’,以此类推。

写一个ROT13函数,实现输入加密字符串,输出解密字符串。

所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。


思考

如下图:

刚开始想的时候,想错了。以为是所有的字符转换成数字编码[Unicode 编码单元(code points)]之后,统一的加13位或者13位之后。之后看到示例,发现并不是这样的。这意味着需要多一层判断来解决编码的加减问题。

整体逻辑是需要先全部进行转换为大写进行操作。其中’A’的数字编码是65,’Z’的编码单元是90。
  之后需要对编码单元在[65,90]之间的编码单元进行操作。


解法
解法1


相关链接

ROT13

String.prototype.charCodeAt()

String.fromCharCode()


发表评论

电子邮件地址不会被公开。 必填项已用*标注