从Java到Javascript的字符串排列
String permutation from Java to Javascript
我是Javascript的新手,我试图使用Javascript重现Java字符串排列,但我无法得到正确的结果。
注意:我在这里遵循这个算法(Hemant的答案):字符串排列与递归
下面是我的代码:function getAllPermutations(input){
var permutations = [];
function loop(prefix, input){
var len = input.length;
if(len==0) {
permutations.push(prefix);
}
else{
for(i = 0; i < len; i++){
loop(prefix + input.charAt(i),input.substr(0,i) + input.substr(i+1,len));
}
}
}
loop("", input);
return permutations;
}
当我调用getAllPermutations("good")
时,它只返回["good"]
。这段代码是怎么回事?我是否错过了回调范围的任何信息?
问题是for
循环中的变量i
是全局定义的。因此,在每次递归中,变量保留前一次迭代的值。
它可以通过在变量前面写入var
来修复,使其成为一个局部变量,如下面的代码片段所示。
for(var i = 0; i < len; i++){
// ...
}
相关文章:
- 按字母顺序排列字符串
- 确定字符串中的所有字母是否按JavaScript字母顺序排列
- Javascript字符串中的加扰字符都是可能的排列,可能性相同
- 根据字符串中的前两个数字重新排列行
- 按照Javascript中定义的顺序排列字符串数组的最佳方式
- 从字符串中重新排列日期
- 在具有重复项的所有可能排列的列表中查找给定字符串的秩
- 在所有可能排列的列表中查找给定字符串的秩
- 按字母顺序排列字符串
- Javascript:打印字符串的排列超出堆栈内存
- 递归打印字符串的所有排列(Javascript)
- JS + math:计算子字符串的排列或组合
- 从Java到Javascript的字符串排列
- 递归解决方案:字符串排列.无法在javascript中返回排列字符串数组
- 如何比较javascript中忽略字符排列的两个字符串
- 如何替换字符串和重新排列字符串
- 按字母顺序排列的最长子字符串 Javascript
- 在一组字符串中重新排列一个字符串 - 正则表达式
- 使用 javascript 重新排列文本(字符串)
- 仅使用javascript创建按字母顺序排列的字符串