JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで単語の配列を組み合わせて文字列を検証する方法

問題の概要

有効な単語の配列と1つの文字列を受け取り、その文字列が配列に含まれる単語を組み合わせて構成できるかどうかを判定するJavaScript関数を作成する必要があります。

入力例

const arr = ['love', 'coding', 'i'];
const str = 'ilovecoding';

出力例

const output = true;

この場合、「ilovecoding」は「i」「love」「coding」という3つの単語を連結することで表現できるため、結果は true となります。

実装コード

以下が実際のコードです。

const arr = ['love', 'coding', 'i'];
const str = 'ilovecoding';

const validString = (arr = [], str) => {
  let arrStr = arr.join('');
  arrStr = arrStr
    .split('')
    .sort()
    .join('');
  str = str
    .split('')
    .sort()
    .join('');
  const canForm = arrStr.includes(str);
  return canForm;
};

console.log(validString(arr, str));

出力結果

true

コードの解説

この実装では、次の3ステップで判定を行っています。

  1. 単語の連結: arr.join('') で配列内のすべての単語を1つの文字列に結合します。
  2. 文字のソート: split('') → sort() → join('') の組み合わせにより、結合した文字列と対象の文字列それぞれの文字をアルファベット順に並べ替えます。
  3. 包含チェック: includes() を使って、並べ替え後の単語全体の文字列の中に、対象文字列の並べ替え結果が含まれるかを確認します。

含まれていれば、その文字列は配列内の単語だけで構成できると判断できます。

補足: この手法は「文字の構成要素」に基づいた簡易的なチェックであり、単語の区切り位置や順序まで厳密には検証していません。より厳密な単語分割(セグメンテーション)の判定が必要な場合は、動的計画法などを用いるアプローチが適しています。

  1. JavaScriptで配列内の唯一の異なる文字列を見つける方法

    問題 文字列の配列を受け取るJavaScript関数を作成する必要があります。配列内のすべての文字列は同じ文字(またはその並べ替え)で構成されていますが、ただ1つの文字列だけが異なる文字セットを含んでいます。この関数の目的は、その唯一の文字列を見つけ出して返すことです。 例: 次のような配列が与えられたとします。 [ba, abc, acb, bac, foo, bca, cab, cba] この場合、求めるべき文字列は「foo」です。 文字列には空白が含まれることがありますが、空白自体は意味を持たず、空白以外の記号のみが判定の対象となります。たとえば、空白だけで構成された文字列は空文字列と

  2. JavaScriptで文字列内のアルファベットだけを反転する方法

    問題の概要JavaScriptで、アルファベットといくつかの特殊文字(記号)が混在する文字列 str を受け取る関数を作成することを求められています。この関数は、入力文字列をもとに新しい文字列を返します。その際のルールは次のとおりです。アルファベット以外の文字(記号・数字など)は、元の位置にそのまま留まります。アルファベットの文字だけが、互いに反転した位置へ移動します。入力例と出力例たとえば、関数への入力が以下だった場合を考えてみましょう。入力const str = k_lmn_opq;出力const output = q_pon_mlk;「_」という記号は位置が変わっておらず、アルファベット