gpt4 book ai didi

javascript - 创建包含数组中 k 个连续字符串的字符串组合

转载 作者:行者123 更新时间:2023-11-30 07:49:04 25 4
gpt4 key购买 nike

如果我们有以下数组:

["it", "wkppv", "ixoyx", "3452", "zzzzzzzzzzzz"]

如果我们试图获得所有可能的 k 字符串组合(在本例中为 3),在没有随机化的情况下,我们应该获得以下字符串:

'itwkppvixoyx'
'wkppvixoyx3452
'ixoyx3452zzzzzzzzzzzz'

当然,因为

"it" + "wkppv" + "ixoyx" = "itwkppvixoyx",

"wkppv" + "ixoyx" + "3452" = "wkppvixoyx3452",

"ixoyx" + "3452" + "zzzzzzzzzzzz" = "ixoyx3452zzzzzzzzzzzz"

但我还没有找到创建这些字符串的方法。

我了解如何根据 k 创建包含 first 字符串和 last 字符串的字符串,例如:

function createStrings (array, k) {
let strings = [];
for (let i = 0; i < array.length - (k - 1); i++) {
strings.push(`${array[i]}${(array[i + (k-1)])}`);
}
return strings;
}

console.log(createStrings(["it", "wkppv", "ixoyx", "3452", "zzzzzzzzzzzz"], 3));

但是当然这些都缺少“中间”元素。

如果 k 是 2 或 4 怎么办?我需要找到一种方法来创建字符串组合,其中包括来自数组的k连续 字符串。关于如何执行此操作的任何想法?

最佳答案

这是滑动窗口的问题,窗口大小是k

解决方案是制作一个初始窗口,然后将其滑向末端。

我记录的解决方案在这里

function createCombinations(stringArray, k) {
// Define an empty array to store combinations
let result = [];

// Make a combination for starting window
let initialWindow = '';

for (let i = 0; i < k; i++) {
// '+' operator, by default string concatenation
initialWindow += stringArray[i];
}

// Add it to Result array
result.push(initialWindow);

// Iterate over remaining stringArray element
for (let i = k; i < stringArray.length; i++) {

// For debugging
// console.log('Initial Combination->', initialWindow, initialWindow.length);
// console.log('Remove first entry->', stringArray[i-k], stringArray[i-k].length);
// console.log('After remove->', initialWindow.slice(stringArray[i-k].length));

// Remove k previous element and add next element
initialWindow = initialWindow.slice(stringArray[i-k].length) + stringArray[i];

// console.log('After add next->', initialWindow);

result.push(initialWindow);
}

return result;
}

/* Tests */

console.log(createCombinations(['One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight'], 3));
console.log(createCombinations(['This', 'is', 'Some', 'Random', 'String'], 4));
console.log(createCombinations(['What', 'Am', 'I', 'Doing', 'Here', 'Some', 'Other'], 2));
console.log(createCombinations(['1', '2', '3', '4', '5', '6', '7'], 3));

注意:如果您在没有 ' ' 的情况下传递数字,它将计算表达式而不是字符串连接。

关于javascript - 创建包含数组中 k 个连续字符串的字符串组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57546521/

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