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

JavaScriptで文字列を暗号化するアルゴリズムの実装方法

問題

文字列を受け取り、次のアルゴリズムに従って暗号化するJavaScript関数を作成します。

  • 入力される文字列は、スペースで区切られた単語のみで構成されているものとします。
  • 文字列内の各単語に対して、以下のルールを適用して暗号化を行います。
    1. 最初の文字:ASCIIコード(10進数)に変換します。
    2. 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. str.split('')で文字列を1文字ずつの配列に分解し、分割代入によって最初の文字(first)と2番目の文字(second)を取り出します。
  2. str[str.length - 1]で最後の文字(last)を取得します。
  3. first.charCodeAt(0)により、最初の文字のASCIIコード(10進数表現)を数値として取得し、結果文字列に連結します。「g」の場合は「103」になります。
  4. 続けて最後の文字を連結し、その後forループで3番目の文字から後ろから2番目の文字までを順番に追加していきます。
  5. 最後に、退避しておいた2番目の文字(second)を末尾に連結すれば、暗号化された文字列の完成です。

注意点

この実装は、各単語が3文字以上あることを前提としています。1〜2文字の短い単語が含まれる可能性がある場合は、文字数に応じた分岐処理を追加することで、意図しない出力(例:undefinedの混入など)を防げます。

  1. JavaScriptで実装するプリム法:最小全域木を求めるアルゴリズムの基本と実装例

    プリム法(Prims Algorithm)とはプリム法は、重み付き無向グラフから最小全域木(MST: Minimum Spanning Tree)を求めるための貪欲法(グリーディアルゴリズム)です。グラフ内のすべての頂点を含み、かつ辺の重みの合計が最小になるような辺の部分集合(木)を見つけ出します。アルゴリズムは、任意の開始頂点から木の構築を始め、1ステップごとに「木に属する頂点」と「木に属さない頂点」をつなぐ辺の中から、最もコスト(重み)の小さいものを1本追加していくことで動作します。プリム法の動作の流れ以下の図を使って、プリム法がどのように動作するのかを順番に見ていきましょう。ステップ1:

  2. JavaScriptで文字列を真偽値(Boolean)に変換する方法

    JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style>     body {         font-family: &