String Permutation函数无法正常工作

时间:2017-07-19 10:07:51

标签: javascript permutation

首先很抱歉打扰了几次问过的问题。但我不得不说我已经阅读了有关字符串排列的相关问题,我无法弄清楚下面代码的实际问题。我想返回一个字符串的组合。请帮我找出错误! PS:我刚刚开始学习javascript!



$('.hotel-dropdown').click(function (e) {
    var hotelroomid = $(this).attr('id').toString().concat('room');
    $("#".concat(hotelroomid)).empty();
    $.get('GetHotelRooms', { id: $(this).val() }, function (data) {
        $.each(data, function (index, value) {
            $('<option>').val(value.id).text(value.name).appendTo("#".concat(hotelroomid));
        });
    });
});
&#13;
&#13;
&#13; 输入:&#39; AAB&#39; OUTPUT:AAB,AAB,ABA,ABA,BAA,BAA]

2 个答案:

答案 0 :(得分:1)

你的逻辑实际上是正确的,你刚刚在for循环中声明了i而没有var,这使得它成为全局并且给你错误。一旦纠正,它似乎正在起作用:

&#13;
&#13;
var result = [];

function doPerm(prefix, suffix, result) {
if (suffix.length === 0)
    result.push(prefix);
else {
    for (var i = 0; i < suffix.length; i++) {
        doPerm(prefix + suffix.charAt(i), suffix.slice(0, i) + suffix.slice(i + 1), result);
    }
}
}

function permAlone(str) {
var prefix = "";
var suffix = str;
doPerm(prefix, suffix, result);
return result;
}

console.log(permAlone('aab'));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这只是在一篇论文的背后思考但是。

for(i;i<string.length;i++) {
      var s = string.slice(i,i+1);
      var c = string.charAt(i);
      var q = s.split("");

      for(b=0;b<q.length;b++) {

          var newArray = q.slice();
          newArray.splice(b,0,c);
          result.push(newArray.join());
      }
}

有效吗?

更新这似乎有效!

<script>

var string = "aab";
var result = []; 

for(i=0;i<string.length;i++) {
      var c = string.charAt(i);

      var q = string.split("");
      q.splice(i,1);

      console.log("first");
      console.log(q);
      console.log(c);

      for(b=0;b<q.length;b++) {



          var newArray = q.slice();
          newArray.splice(b,0,c);
          result.push(newArray.join());
      }
}


console.log(result);

</script>