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

【JavaScript】小文字のアルファベット文字列の1始まりインデックススコアを求める方法

問題概要

小文字のアルファベットのみで構成された文字列を受け取り、その文字列全体の「インデックススコア」を計算して返すJavaScript関数を作成する必要があります。

ここでいうインデックスとは、アルファベットにおける各文字の位置のことです。「a」が1、「b」が2、「c」が3…というように対応し、最後の「z」は26となります。関数は文字列内のすべての文字のインデックス値を合計し、その結果を返すものとします。

具体例

例えば「abc」という文字列の場合、1 + 2 + 3 = 6 がスコアになります。

実装コード

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

const str = 'lowercasestring';
const findScore = (str = '') => {
    const alpha = 'abcdefghijklmnopqrstuvwxyz';
    let score = 0;
    for(let i = 0; i < str.length; i++){
        const el = str[i];
        const index = alpha.indexOf(el);
        score += (index + 1);
    };
    return score;
};
console.log(findScore(str));

出力結果

コンソールには以下のように出力されます。

188

コードの解説

この実装の流れは以下のとおりです。

まず、基準となるアルファベット順の文字列「abcdefghijklmnopqrstuvwxyz」を用意します。次に、対象の文字列を1文字ずつループで処理し、indexOf() メソッドで該当文字の位置を取得します。indexOf() の戻り値は0始まりのため、+1することで目的の1始まりのインデックスに変換しています。あとは各文字のスコアを累積加算し、ループ完了後に合計値を返すだけです。

より効率的な代替案:charCodeAt を使う方法

上記の方法でも十分動作しますが、より効率的な実装として String.prototype.charCodeAt() を利用する方法もあります。「a」の文字コードは97であるため、charCodeAt(0) - 96 を計算すれば、indexOf による文字列検索を行わずに直接インデックスを求めることができます。長い文字列を扱う場合やパフォーマンスが重視される場面では、こちらの手法がおすすめです。

  1. JavaScriptで配列要素をそのインデックスでべき乗した値に変換する方法

    問題 数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、入力配列の各要素を、その要素の位置を示す0始まりのインデックスでべき乗し、新しい配列へと変換します。そして最終的に、この新しい配列を返します。 例えば、インデックス0にある要素は0乗(常に1)、インデックス3にある要素は3乗、というように各要素が処理されます。 実装のポイント ループで配列を走査しながら、各要素とそのインデックスを同時に取得する Math.pow() を使って「要素 ^ インデックス」を計算する 計算結果を結果配列の同じ位置に格納する なお、モダンなJavaScriptでは Math

  2. JavaScriptでアルファベットの1始まりのインデックスを取得する方法

    問題JavaScriptで関数を作成する必要があります。この関数は、小文字の英字アルファベット1文字を受け取り、その文字がアルファベットの中で何番目に位置するかを「1始まり」のインデックスとして返します。例えば、a なら 1、j なら 10 を返すといったイメージです。無効な入力が渡された場合は -1 を返してエラーを通知すると親切です。実装の考え方最もシンプルな方法は、先頭に半角スペースを付けたアルファベット文字列「 abcdefghijklmnopqrstuvwxyz」を基準(レジェンド)として用意することです。こうすることで、スペースが0番目となり、a は1番目、j は10番目というよう