gpt4 book ai didi

java - 破译某些文本的最有效方法

转载 作者:行者123 更新时间:2023-12-02 04:19:38 24 4
gpt4 key购买 nike

我正在开发一个小型应用程序,其中给我一些字符串“MRUGDQ”和移位值3,例如。然后我将每个字母向左移动 3,结果将是“JORDAN”。例如,M 将被 J 替换,R 将被 O 替换,依此类推。

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

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

伪代码

  1. 获取字符的ascii值(假设 char 恰好在大写字母范围内)
  2. 将移位值添加到 char ascii 值

  3. if new ascii value <= 90
    replace old letter by new letter
    else
    int diff = new ascii value - 90
    while (new ascii value <= 90) {
    decrement diff value by 1
    increment new ascii value by 1
    }
    add remaining diff to 65 and set that as new ascii value
    replace old letter by new letter
  4. 对字符串中的每个字母执行此操作。

请告诉我我的方法是否正确或者我是否可以提高效率。

最佳答案

我没有看到太多需要改进的地方,除了你对新字符的处理超出了范围。如果您想将重叠量“滚动”回范围的开头,则只需计算:(x % 90) + 64(*)(其中 x 为添加移位值后的ascii值)。

示例:

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

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

(*) 一般公式为:(值 % 上限)+(下限 - 1)。您还可以使用(值%上限+ 1)+下限

关于java - 破译某些文本的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32925321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com