如何实现凯撒密码?

时间:2015-11-13 21:00:46

标签: java

我正在编写一个代码来破译邮件。为此,您输入一个字符串,并按以下方式输出b,b变为a,c变为b,依此类推。同样,对于数字2变为1,3变为2.

1 个答案:

答案 0 :(得分:1)

方法String.replace(char,char)用新字符替换所有给定字符的出现次数。

所以,例如,假设你有一个像“与裁缝交谈”这样的字符串,你在它上面运行了replace('t','w'),你就得到了“走路的人”。

但这意味着一旦你找到你已经更换过的字母,你就会再次更换它们 - 再回到另一封信。

您不应该使用replace。最好的办法可能是使用StringBuilder并在解密后将每个字母附加到它上面。

另请注意,只是为了找到这封信而通过整个字母表是非常浪费的。首先,已经存在indexOf类中称为String的方法。其次,对于英文字母和数字,字符unicode值是连续的。这意味着您可以通过简单地减去一个来ab

char ch = 'b';
ch = (char)(ch - 1);

这会在a中为您提供ch。所以你需要做的就是确保字符在给定的范围内,然后从中减去1。