ご挨拶
このシリーズでは、Codewars の課題と私の思考プロセスを投稿しています。私は可能な限り JS と Node 18 を使用しています。明確にするために、私はそれらを公正に使用しています。
わかりました、これはジューシーでした。本質的には、文字列内の重複を削除し、残ったものを並べ替えて、2 つの文字列を結合する必要があります。正確にはその順番ではありません。実は私は全く逆の方法でやりました。また、非常に特殊なステップ (重複の削除) 用のユーティリティ関数も作成しました。
まず、2 つの文字列を連結します。簡単:
let longest = s1 + s2;
2 番目に、文字を分割します。
let array = new Array(s1.length + s2.length); for (let i = 0 ; i < s1.length + s2.length ; i++ ){ array[i] = longest[i]; }
第三に、文字を並べ替えます:
array = array.sort((a, b) => a.localeCompare(b)); // (a, b) => a.localeCompare(b) THIS IS REDUNDANT, but I leave it as a reminder
4 番目に、重複を削除します:
function keepFirstLetter(array){ let arrayFixed = new Array(array.length); let counter = 0; arrayFixed[0] = array[0]; for (let i = 0 ; i < array.length ; i++ ){ if (arrayFixed[counter] != array[i]){ counter++; arrayFixed[counter] = array[i]; } } return arrayFixed; }
5 番目、クリーンアップ:
array = array.join("");
最後に、パズルの各ピースを一緒に配置します:
function longest(s1, s2) { let array = new Array(s1.length + s2.length); let longest = s1 + s2; for (let i = 0 ; i < s1.length + s2.length ; i++ ){ array[i] = longest[i]; } array = array.sort((a, b) => a.localeCompare(b)); array = keepFirstLetter(array); array = array.join("") return array; } function keepFirstLetter(array){ let arrayFixed = new Array(array.length); let counter = 0; arrayFixed[0] = array[0]; for (let i = 0 ; i < array.length ; i++ ){ if (arrayFixed[counter] != array[i]){ counter++; arrayFixed[counter] = array[i]; } } return arrayFixed; }
それは明らかにパフォーマンスが良くありません。私はその2番目のループが好きではありません。そして、あまりきれいではありません。いつかこれを再訪する必要があるでしょう。
お元気で。水を飲みましょう???
前
以上がコードウォーズ - 2対1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。