【发布时间】:2017-08-02 14:31:22
【问题描述】:
我正在尝试了解如何使用双循环查找字符串的所有组合,但我遇到的解决方案对我的理解来说太复杂了。该函数可以满足我的需要,但我对设置单或双 for 循环有初学者的理解。
我希望对正在发生的事情进行一般性的逐步解释,但针对具体问题:什么函数是“i Math.pow(2,n)-1”,“ ((i & (1 j)) == 1 j)”和“var comb = '';(临时存储?)”服务?
subsets = function(str) {
var n = str.length;
for (var i=1; i< Math.pow(2,n)-1; i++) {
var comb = '';
for (var j=0; j<n; j++) {
var use = ((i & (1 << j)) == 1 << j);
if(use)comb+=str.charAt(j);
}
console.log(comb);
}
}
subsets("age");
输出:a a g a e g ge e
【问题讨论】:
-
您的输出顺序错误。必须是 g ae 例如
标签: javascript loops combinations