連休の自習
6670 ワード
Toy 11.Powerset
集合として文字列を入力し、各文字で作成できるすべての部分集合を返す必要があります.
I/O例
let output1 = powerSet('abc');
console.log(output1); // ['', 'a', 'ab', 'abc', 'ac', 'b', 'bc', 'c']
let output2 = powerSet('jjump');
console.log(output2); // ['', 'j', 'jm', 'jmp', 'jmpu', 'jmu', 'jp', 'jpu', 'ju', 'm', 'mp', 'mpu', 'mu', 'p', 'pu', 'u']
const powerSet = function (str) { //str= 'abc'
const set = Array.from(new Set(str));
//자료구조 set 객체 //중복을 허락하지 않는다. //Array.from 얕은복사
set.sort();
let newStr = set.join("");
let result = [];
function recursion(string, begin) {
result.push(string);
for(let i = begin; i < newStr.length; i++) {
recursion(string + newStr[i], i + 1);
}
}
recursion('', 0);
return result;
};
以前は全然分かりませんでしたが、絵を描いたら分かりました.青い字は出力順です.
!!論理演算子
JavaScriptには2つの感嘆符(!)があります.他のタイプのデータを明示的にブール型変換(Type Conversion)として用いたという.
let a
console.log(a) //undefined
console.log(!a) //true
console.log(!!a) //false
それ以外は
!! 論理演算子
ソートアルゴリズム
アルゴリズムの問題を見てもソートにはいろいろな種類があることがわかりました.
Reference
この問題について(連休の自習), 我々は、より多くの情報をここで見つけました https://velog.io/@syc765/0922-연휴자습テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol