解密一些文本的最有效方法

时间:2015-10-03 17:17:10

标签: java

我正在开发一个小应用程序,我给它一些字符串“MRUGDQ”和一个移位值3。然后我将每个字母向左移3,结果将是“JORDAN”。例如,window.onload = $(function() { $(".element").typed({ strings: ['Are you down with the movement(Y/N)?'], typeSpeed: 150 }); setTimeout(function() { $(".element").editableDiv(); }, 1000) }); 将替换为M,而J将替换为R,依此类推。

所以现在这是我想要使用的方法,但我想知道这是否有效并且我可以改进我的解决方案吗?

我做出的假设:
我假设我的字符串将是大写字母A到Z字母或小a到z字母,因此ascii范围分别是65到90和97到122.

Pesudo Code

  1. 获取char的ascii值 (假设char恰好在大写字母范围之间)
  2. 将shift值添加到char ascii值

  3. O
  4. 为字符串中的每个字母执行此操作。
  5. 如果我的方法正确或我的效率更高,请告诉我。

1 个答案:

答案 0 :(得分:2)

除了你对新char的处理超出范围之外,我没有看到太多改进。 如果您希望将重叠量“滚动”回到范围的开头,而不仅仅计算:(x % 90) + 64(*)(添加移位值后x为ascii值)。

示例:

'Y' (89) + 3 = '\' 92
92 % 90 = 2
2 + 64 = 'B' (66)

您需要从 64 开始,以避免跳过'A',其值 65

(*)通用公式为:(value % upper bound) + (lower bound - 1)。 您也可以使用(value % upper bound + 1) + lower bound