gpt4 book ai didi

javascript - 将困惑数组与字符串匹配的函数

转载 作者:数据小太阳 更新时间:2023-10-29 05:35:04 24 4
gpt4 key购买 nike

有谁知道我如何将一堆困惑的字母与一个单词匹配,例如,一些匹配的函数一个数组,例如 ["a","c","a","e","c"];给一个词“ace”并给我 1 或者如果不是 -1 就像 indexOf 或 InArray 但对于一个困惑的词。我用一个有据可查的例子制作了一个 js fiddle

请注意,我会将字母数组与 30000 - 50000 个单词的任意位置进行比较。

https://jsfiddle.net/AlexanderMitrakis/89dchpt8/1/

this.gameletters = []; //Array of Game letters. 
//e.g. ["P", "E", "H", "E", "U", "I", "S", "Q", "N"];


this.possiblesolution = new String(); //highest solution within gameletters
//e.g. "QUEENSHIP" (related to above letters)

this.wordBank = new Array();
//array of arrays structure is formated around alphabet with an array for each character:
/*
a: Array(7295)
b:Array(7271)
c:Array(11381)
d:Array(7216)
...
y:Array(607)
z:Array(623)
*/

最佳答案

递归策略是一个简单的解决方案,但如果你的 gameletters 数组变得太大,它确实会减慢执行速度。对于像拼字游戏这样的游戏,它应该足够了。

Fiddle

var gameletters = ["P", "E", "H", "E", "U", "I", "S", "Q", "N"];
var wordbank = {
"a": Array(3461),
"b": Array(2391),
//...
};

var matches = {};

function step(word, letters) {
for(var i = 0, len = letters.length; i < len; i++) {

var arr = letters.map(a => a);
if (arr.length === 0) {
return;
}

var letter = arr[i];
arr.splice(i,1);
test(word + letter);

if (arr.length) {
step(word + letter, arr)
}
}
}

function test(word) {
var firstLetter = word.substr(0,1);
if (wordbank[firstLetter].indexOf(word) >= 0) {
matches[word] = 1;
}
}

step("", gameletters);

关于javascript - 将困惑数组与字符串匹配的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44104018/

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