我不知道是否「組合」是正確的詞,但我想掃描一個字符串,以獲得所有可能的子字符串,如 前。JS +數學:計算排列或子串的組合
var str = "abcd";
// do something here, a for loop i guess...
WANTED OUTPUT:
a
ab
abc
abcd
b
bc
bcd
c
cd
d
我沒有興趣像DCBA結果,所以,我是不是在尋找排列... 什麼是做到這一點的功能?
謝謝!!
我不知道是否「組合」是正確的詞,但我想掃描一個字符串,以獲得所有可能的子字符串,如 前。JS +數學:計算排列或子串的組合
var str = "abcd";
// do something here, a for loop i guess...
WANTED OUTPUT:
a
ab
abc
abcd
b
bc
bcd
c
cd
d
我沒有興趣像DCBA結果,所以,我是不是在尋找排列... 什麼是做到這一點的功能?
謝謝!!
要獲得所有可能的子串(你說得對,這不是「置換」),你可以只使用兩個嵌套循環的起點和終點指標:
var str = "abcd";
var substrings = [],
len = str.length;
for (var i=0; i<len; i++)
for (var j=i+1; j<=len; j++)
substrings.push(str.slice(i, j));
substrings;
// ["a", "ab", "abc", "abcd", "b", "bc", "bcd", "c", "cd", "d"]
如果你想獲得空字符串,只需將其添加到substrings
的初始化即可。
它很容易,你可以自己做到這一點:
var str = "abcd";
var substrings = [];
for (var i = 0; i < str.length; i++){
for (var j = i + 1; j <= str.length; j++)
substrings.push(str.substring(i, j));
}
抱歉,我沒有找到以前的答案。 – 2013-04-08 20:18:29
你有沒有給它一個去? – 2013-04-08 19:58:04
你確定你不想'ac','ad','abd','acd','bd'嗎? – kennebec 2013-04-08 20:30:23
@kennebec:他要求子串,而不是子串。 – Bergi 2013-04-09 09:13:54