2017-07-19 19 views
1

最初に何度も質問をして申し訳ありませんでした。しかし、文字列置換に関する関連する質問を読みましたが、実際の問題を理解できませんでした。コード私は以下のとおりです。私は文字列の組み合わせを返すしたい。間違いを見つけるのを助けてください! PS:私はちょうどJavaScriptを学び始めました!文字列置換関数が正しく機能していない

var result = []; 
 

 
function doPerm(prefix, suffix, result) { 
 
    if (suffix.length === 0) 
 
     result.push(prefix); 
 
    else { 
 
     for (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'));
INPUT: 'AAB' OUTPUT:[AAB、AAB、ABA、ABA、BAA、BAA]

+0

ので、あなたはAABのすべての組み合わせをretunしたい、例えばAAB、BAAなど –

+0

@RichardHoushamはい:修正された後に動作しているようです!まったく! –

+0

私は私の答えをチェックします! –

答えて

1

あなたのロジックは、実際に、あなたはちょうどそれがグローバル作っループの中varなしiを宣言し、あなたにエラーを与えていた正解でした。 ABA、

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'));

+0

ありがとう!それは素晴らしい作品です! –

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> 
+0

いいえ、それはありません!仕事 –

+0

それは働いていません。文字列 'aab'のa、a、a、b、bの結果を返します。 –

+0

あなたは、いくつかの重複がありますが、乾草のho –

関連する問題