反復DNA配列。DNA配列への入力は、全てのDNA配列の出力が複数回登場しました。この問題は、ビット・コンピューティングの実践を持っていますが、個人的に使用HashSetの練習がより便利と感じています。
アイデアは、格納されたシーケンスが発生したかどうか2つのHashSetの、(見られる)を使用することであり、もう一つは最後の出力(RES)を含みます。子が順番に見られた場合は、RESに格納され、すべてのサブシーケンスの最終出力内部RES。
時間O(N) - Nを入力文字列の長さ
スペースO(N) - 2つのHashSetのと
1 / * * 2 * @param {文字列} S 3 * @return {ストリング[]} 4 * / 5 のvar findRepeatedDnaSequences = 機能(S){ 6 =見LET 新しいセット()。 図7は、 RES =ましょう新しいセット(); 8 用(i = 0せ; iはs.length < - 9; iは++ ){ 9 CONST STR = s.substring(iは、iが10 + )。 10 であれば(seen.has(STR)){ 11 res.add(STR)。 12 } 他{ 13 seen.add(STR)。 14 } 15 } 16 リターンArray.from(RES)。 17 }。