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コードの解説
このコードの処理の流れを順番に見ていきましょう。
文字列の分解:
split('')で文字列を1文字ずつの配列に分割し、分割代入によって先頭の文字(first)と2番目の文字(second)を取り出します。末尾の文字を取得: インデックス
str.length - 1を参照して、最後の文字を取得します。結果文字列の組み立て: まず
charCodeAt(0)で先頭文字をASCIIコードに変換して連結し、続けて末尾の文字を追加します。中間の文字をそのまま連結: forループを使い、3番目の文字から末尾の手前までの文字を順番に追加していきます。
2番目の文字を末尾へ移動: 最後に、入れ替え先となる2番目の文字を末尾に付けて完成です。
なお、複数の単語を含む文字列に対応させたい場合は、split(' ') で単語ごとに分割し、各単語に同じ処理を適用してから再び結合すれば実現できます。このように、文字列操作と配列処理を組み合わせることで、独自の暗号化ロジックをシンプルに実装できます。
-
JavaScriptで文字の出現頻度に基づいて文字列をエンコードする方法
問題文字列 str を唯一の引数として受け取る JavaScript 関数を作成する必要があります。この関数は、入力文字列をもとに新しい文字列を生成します。元の文字列の中でその文字が1回だけ出現する場合には「(」を、2回以上出現する場合には「)」を、対応する位置に割り当てます。なお、大文字と小文字の違いは無視して判定します。例えば、関数への入力が次の場合 −入力const str = Success;出力const output = )())());考え方入力文字列「Success」を大文字小文字を区別せずに見ると、「s」は3回、「u」は1回、「c」は2回、「e」は1回出現しています。したがっ
-
JavaScriptで文字列内のアルファベットだけを反転する方法
問題の概要JavaScriptで、アルファベットといくつかの特殊文字(記号)が混在する文字列 str を受け取る関数を作成することを求められています。この関数は、入力文字列をもとに新しい文字列を返します。その際のルールは次のとおりです。アルファベット以外の文字(記号・数字など)は、元の位置にそのまま留まります。アルファベットの文字だけが、互いに反転した位置へ移動します。入力例と出力例たとえば、関数への入力が以下だった場合を考えてみましょう。入力const str = k_lmn_opq;出力const output = q_pon_mlk;「_」という記号は位置が変わっておらず、アルファベット