我有一个包含近 2700 个字符串的数组,我需要为句子字谜找到正确的短语。该列表是一个排序列表,包含近 100k 项长的适合单词的列表。
我想将它们组合成 1、2 和 3 个单词,如果它们适合我的字谜长度,则匹配单词的长度,并修剪空格。
我尝试了这个功能,但它在内存上失败了,我可以设置最多 3 个单词一起匹配:
var permutations = require('./permutations.js').permutations;
var shortList = words.slice(10, 20);
var result = permutations(shortList);
console.log(result);
这在 permutation.js
(function (exports) {
'use strict';
var permutations = (function () {
var res;
function swap(arr, i, j) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
function permutations(arr, current) {
if (current >= arr.length) {
return res.push(arr.slice());
}
for (var i = current; i < arr.length; i += 1) {
swap(arr, i, current);
permutations(arr, current + 1);
swap(arr, i, current);
}
}
return function (arr) {
res = [];
permutations(arr, 0);
var temp = res;
// Free the extra memory
res = null;
return temp;
};
}());
exports.permutations = permutations;
}((typeof window === 'undefined') ? module.exports : window));
编辑:
例子
var input = ['test', 'foo', 'bar', 'hello', 'world'];
var output = magicFunc(input);
// console.log(output);
//
// [['test foo bar'],
// ['test foo hello'],
// ['test foo world'],
// ['test bar foo'],
// ['test bar hello'],
// ['test bar world']...];