Я работаю над проблемой, в которой мне нужно найти весь набор мощности данной строки, который является всеми возможными подмножествами. Я чувствую, что близок со своим текущим кодом, но не могу понять, почему я застреваю на бесконечном l oop для моей второй итерации. Я прогнал его через отладчик, но все еще не могу понять, хотя уверен, что это очень просто. Когда i = 0
, тогда он переходит ко второму l oop, где j = 0 && j < 1
, поэтому, например, если help
является моим заданным аргументом str, я ожидал бы, что он добавит j + ''
и pu sh в мой allSubsets
массив. Проблема в том, что итерация j
будет продолжать цикл и выполнение j++
и никогда не остановится. Я не уверен, почему это так. Один конкретный вопрос, даже если я решу этот бесконечный l oop - нужно ли мне обновлять allSubsets.length
на итерации, чтобы он обновлялся с помощью вставленных строк?
var powerSet = function(str) {
let allSubsets = [''];
for (let i = 0; i < str.length; i++) {
debugger;
for (let j = 0; j < allSubsets.length; j++) {
allSubsets.push(sortLetters(str[i] + allSubsets[j]));
}
}
return allSubsets;
};
var sortLetters = (word => {
//convert string to an array
//use the sort to sort by letter
//convert array back to string and return
return word.split('').sort().join('');
})