【发布时间】:2020-12-30 20:11:50
【问题描述】:
我需要为一个小游戏制作一个“解码器”类型的东西。它给你一个像这样的字符串:
eGgeggEGgO
翻译成“猫”是因为:
c = eGg
a = egg
t = EGgO
问题是某些单词/字母具有相同的部分,例如 eGg 和 eGgo (K)。
所以理论上我会想象某种类型的“算法”找到“最长”匹配,它找到eGg,尝试eGgo,找不到它,然后它知道它是C。
我遇到的问题是它真的不高效,因为它找到了第一个匹配项,并且必须遍历所有单词以查看是否还有另一个匹配项。基本上必须遍历每个字母的所有字母。我觉得必须有更好的方法来处理它。
这是针对网络的,它可能有一个后端,但希望只在客户端上完成,所以我开始使用 JavaScript。我对伪代码版本或 JavaScript 或其他一些语言感到满意。我最困惑的是概念上的“如何”,而不是自己的实际编码。
更新:
这是完整的地图
egg: 'A',
Egg: 'B',
eGg: 'C',
EGg: 'D',
egG: 'E',
EgG: 'F',
eGG: 'G',
EGG: 'H',
eggo: 'I',
Eggo: 'J',
eGgo: 'K',
EGgo: 'L',
egGo: 'M',
EgGo: 'N',
eGGo: 'O',
EGGo: 'P',
eggO: 'Q',
EggO: 'R',
eGgO: 'S',
EGgO: 'T',
egGO: 'U',
EgGO: 'V',
eGGO: 'W',
EGGO: 'X',
eggy: 'Y',
eggs: 'Z'
【问题讨论】:
-
请告诉我们编码算法,否则我们无能为力。示例不足以理解编码/解码方案是如何工作的。
-
是的,如果你没有prefix code,就很难解码,你可能需要回溯,而且你可能根本不会成功。
-
已更新,如果有帮助,它会拥有完整的映射。
-
您可以轻松地标记您的输入,因为所有代码符号都以
e开头但以不同的字母结尾。无需“为每个字母循环遍历所有字母。” -
哦,这很聪明,现在你提到它,找到开始的明显模式。谢谢!
标签: javascript algorithm parsing decode