我正在编写一个代码,它将返回字符串或数组的所有可能组合。但是我编写的代码并没有考虑将字符重复为可能的组合。这是我的代码 -
function combinations(str) {
var fn = function(n, r, q) {
if (!n && !r)
return;
if (!r) {
q.push(n);
} else {
fn(n + r[0], r.slice(1), q);
fn(n, r.slice(1), q);
}
return q;
}
return fn("", str, []);
}
console.log(combinations("abcd"));

输出
[ 'abcd', 'abc', 'abd', 'ab', 'acd', 'ac', 'ad', 'a', 'bcd', 'bc', 'bd', 'b', 'cd', 'c', 'd' ]
但我想编写一个代码,它会考虑重复字符,例如" abcd"应该给" aabd" ," abac"," abbb"这样的结果以及上述输出。
每个角色可以重复多少次没有限制,但是字符串的大小会有限制。例如,如果字符串的长度为4,则所有输出字符串的长度也应为4或更短。
我有什么建议吗?提前致谢