Меня попросили вычислить сложность пространства для созданной мной функции «машина анаграммы».Функция возвращает все возможные комбинации строк, заменяя буквы.И имеет объект «памятки», чтобы помочь в выполнении расчетов.Итак, вопрос: как бы вы вычислили сложность пространства этой функции?
const arrangeLetters = (function () {
let dat = {
memoization: {}
};
const arrange = (word) => {
if (word.length < 2) {
dat.memoization[word] = [word];
return [word]
}
let curLetter, restOfWord;
let newEntry = '';
let allAnswers = [];
let index = 0;
let anagrams = [];
let i, j;
for (i = 0; i < word.length; i++) {
curLetter = word[i];
restOfWord = word.substr(0, i) + word.substr(i + 1, word.length - 1);
let shortwordArray = dat.memoization[restOfWord] || arrange(restOfWord);
for (j = 0; j < shortwordArray.length; j++) {
newEntry = curLetter + shortwordArray[j];
anagrams[index++] = newEntry;
dat.memoization[curLetter + restOfWord] = anagrams;
allAnswers.push(newEntry);
}
}
return allAnswers;
};
return arrange;
})();
console.log(arrangeLetters('abefghi'));