コードウォーズ - 2対1

Barbara Streisand
リリース: 2025-01-06 08:50:42
オリジナル
911 人が閲覧しました

ご挨拶

Codewars - Two to One

このシリーズでは、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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート