如何在JavaScript中生成字符串的所有组合
在本文中,我们将看看是否可以使用JavaScript的方法或概念生成给定字符串的所有可能组合。
给定一个包含不同字符的字符串,您需要通过一次选择一个字符然后重新排列该字符与其他字符以便生成和方便地打印所有组合。
解决这个问题有几个方法,我们将逐一讨论每个方法,但首先让我们明确我们需要实现的目标。
以下图片描述了生成给定字符串的所有可能组合的场景。
狗 => 可能的组合 [D], [Do], [Dog], [o], [og], [g]
例如(在上面的图示中提到)一个名为“狗”的字符串可以进一步分解为多个字符串,如 “D”, “Do”,等等。
以下是使用JavaScript生成字符串所有组合的几种方法:
方法一:
- 在这个方法中,我们将使用数组这个数据结构,并在给定的字符串上运行两个for循环,这实际上是我们代码的主要逻辑部分。
- 进一步地,我们将使用 .push() 和 .slice() 方法将结果添加到数组中。
示例: 这个示例显示了上述方法的使用。
<script>
let possibleCombinations = (str) =>{
let combinations = [];
for(let i = 0 ;i < str.length; i++)
{
for(let j = i + 1; j< str.length + 1; j++)
{
combinations.push(str.slice(i , j));
}
}
return combinations;
}
console.log(possibleCombinations('狗'));
</script>
输出: 上述程序的输出如下。
[ 'd', 'do', 'dog', 'o', 'og', 'g' ]
方法二:
- 在这个方法中,我们将再次使用数组作为我们的结果变量,并将当前索引值作为起始值(即0)。
- 然后我们将运行一个while循环,在该while循环中,我们将使用 .charAt() 方法存储我们当前索引值处的字符。
- 然后,我们将声明一个临时数组,将其中存储的字符。
- 然后,我们将运行一个for-in循环,在该循环中,我们将推送我们的结果,然后我们将使用 .concat() 方法将结果添加到结果变量中,然后我们将递增我们当前索引变量的值。
示例: 这个示例显示了上述方法的使用。
<script>
let stringCombinations = (str) => {
let strLength = str.length;
let result = [];
let currentIndex = 0;
while (currentIndex < strLength) {
let char = str.charAt(currentIndex);
let x;
let arrTemp = [char];
for (x in result) {
arrTemp.push("" + result[x] + char);
}
result = result.concat(arrTemp);
currentIndex++;
}
return result;
};
console.log(stringCombinations("dog"));
</script>
输出: 上述代码的输出如下。
[ 'd', 'o', 'do', 'g', 'dg', 'og', 'dog' ]
方法3:
- 在这种方法中,我们将使用两个数组,一个是临时数组,最初用于存储结果,最后将结果添加到第二个结果数组中。
- 这里首先使用一个for循环,并在循环内部使用另一个for循环,将字符串的每个字符添加到临时数组中,然后将起始索引值设置为0。
- 然后在for循环内部使用 .push() 方法将结果推送到临时数组中,并增加当前索引值。
- 然后在for循环后,将结果从临时数组添加到结果数组中,然后打印结果数组。
示例:
<script>
let combinations = (str) => {
let tempArr = [];
let resultArr = [];
for (let i = 0; i < str.length; i++) {
tempArr = [str[i]];
let index = 0;
while (resultArr[index]) {
tempArr.push("" + resultArr[index] + str[i]);
index++;
}
resultArr = resultArr.concat(tempArr);
}
return resultArr;
};
console.log(combinations("dog"));
</script>
输出: 上述程序的输出为。
[ 'd', 'o', 'do', 'g', 'dg', 'og', 'dog' ]
阅读更多:JavaScript 教程