2017-07-19 123 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

所以你要retun AAB的所有組合,e.g AAB,ABA,BAA等 –

+0

@RichardHousham是的!究竟! –

+0

我會檢查我的答案! –

回答

1

你的邏輯是正確的其實,你只是宣佈i沒有在for循環這使得它的全球var,並給你的錯誤。似乎一旦方式進行修正工作:

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

它不工作。它產生a,a,a,a,b,b的結果作爲字符串'aab'。 –

+0

你走了,有些重複,但乾草浩 –