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'