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

JavaScriptでアルゴリズムに基づいて文字列を暗号化する方法

問題

文字列を受け取り、以下のアルゴリズムに基づいて暗号化するJavaScript関数を作成する必要があります。

  • 文字列は、スペースで区切られた単語のみで構成されているものとします。

  • 文字列内の各単語は、次のルールに従って暗号化します。

    • 先頭の文字は、対応するASCIIコードに変換します。

    • 2番目の文字は、末尾の文字と入れ替えます。

このルールに従うと、たとえば「good」という文字列は「103doo」に暗号化されます。先頭の「g」がASCIIコードの「103」に置き換えられ、2番目の「o」と最後の「d」が入れ替わるためです。

サンプルコード

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

const str = 'good';
const encryptString = (str = '') => {
  const [first, second] = str.split('');
  const last = str[str.length - 1];
  let res = '';
  res += first.charCodeAt(0);
  res += last;
  for (let i = 2; i < str.length - 1; i++) {
    const el = str[i];
    res += el;
  }
  res += second;
  return res;
};
console.log(encryptString(str));

実行結果

103doo

コードの解説

このコードの処理の流れを順番に見ていきましょう。

  1. 文字列の分解: split('') で文字列を1文字ずつの配列に分割し、分割代入によって先頭の文字(first)と2番目の文字(second)を取り出します。

  2. 末尾の文字を取得: インデックス str.length - 1 を参照して、最後の文字を取得します。

  3. 結果文字列の組み立て: まず charCodeAt(0) で先頭文字をASCIIコードに変換して連結し、続けて末尾の文字を追加します。

  4. 中間の文字をそのまま連結: forループを使い、3番目の文字から末尾の手前までの文字を順番に追加していきます。

  5. 2番目の文字を末尾へ移動: 最後に、入れ替え先となる2番目の文字を末尾に付けて完成です。

なお、複数の単語を含む文字列に対応させたい場合は、split(' ') で単語ごとに分割し、各単語に同じ処理を適用してから再び結合すれば実現できます。このように、文字列操作と配列処理を組み合わせることで、独自の暗号化ロジックをシンプルに実装できます。

  1. JavaScriptで文字の出現頻度に基づいて文字列をエンコードする方法

    問題文字列 str を唯一の引数として受け取る JavaScript 関数を作成する必要があります。この関数は、入力文字列をもとに新しい文字列を生成します。元の文字列の中でその文字が1回だけ出現する場合には「(」を、2回以上出現する場合には「)」を、対応する位置に割り当てます。なお、大文字と小文字の違いは無視して判定します。例えば、関数への入力が次の場合 −入力const str = Success;出力const output = )())());考え方入力文字列「Success」を大文字小文字を区別せずに見ると、「s」は3回、「u」は1回、「c」は2回、「e」は1回出現しています。したがっ

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

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