Javascript 如何解析和翻译包含相同部分的单词的字符串

Javascript 如何解析和翻译包含相同部分的单词的字符串,javascript,algorithm,parsing,decode,Javascript,Algorithm,Parsing,Decode,我需要为一个小游戏做一个“解码器”类型的东西。它会给您一个字符串,如: egggo 翻译成“猫”是因为: 问题是有些单词/字母有相同的部分,如eGg和eGgo(K) 因此,理论上我会想象某种类型的“算法”,在它找到eGg、尝试eGgo、找不到它的地方找到“最长”的匹配,然后它知道它是C 我的问题是,它实际上没有性能,因为它找到了第一个匹配项,并且必须循环遍历所有单词以查看是否还有其他匹配项。基本上每个字母都要循环遍历所有字母。我觉得一定有更好的办法来处理 这是针对web的,它可以有一个后端,但希

我需要为一个小游戏做一个“解码器”类型的东西。它会给您一个字符串,如:

egggo

翻译成“猫”是因为:

问题是有些单词/字母有相同的部分,如eGg和eGgo(K)

因此,理论上我会想象某种类型的“算法”,在它找到
eGg
、尝试
eGgo
、找不到它的地方找到“最长”的匹配,然后它知道它是
C

我的问题是,它实际上没有性能,因为它找到了第一个匹配项,并且必须循环遍历所有单词以查看是否还有其他匹配项。基本上每个字母都要循环遍历所有字母。我觉得一定有更好的办法来处理

这是针对web的,它可以有一个后端,但希望只在客户端上执行,所以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'

这是一个标记化问题,因此我们需要一个语法规则来定义标记

幸运的是,每一个标记都以一个“e”开头,所以这都是关于找到e并在它们之前拆分的

const-tokenMap={
鸡蛋:“A”,
蛋:“B”,
蛋:“C”,
蛋:“D”,
蛋:“E”,
鸡蛋:“F”,
蛋:“G”,
蛋:“H”,
埃戈:“我”,
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',
蛋:“Y”,
鸡蛋:“Z”
}
已加密常数='egggo';
const tokens=加密。替换(/[e | e]/g,^\$&');
const mappedTokens=tokens.split('^').map(key=>tokenMap[key])
const deciphered=mappedTokens.join(“”)

console.log(解密)
请告诉我们编码算法,否则我们无法帮助您。这个例子还不足以理解编码/解码方案是如何工作的。是的,如果你没有一个密码,那么很难解码,你可能需要回溯,您可能根本不会成功。如果有帮助的话,将进行更新,使其具有完整的映射。您可以轻松标记您的输入,因为所有代码符号都以
e
开头,但以不同的字母结尾。不需要“为每个字母循环所有字母”。哦,这是一个聪明的模式,而且,现在你已经提到了,找到开始的明显模式。非常感谢。
  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'