JavaScript で文字列を逆にする

Sahil Bhosale 2023年10月12日
  1. JavaScript の組み込み関数を使用して文字列を反転する
  2. JavaScript で再帰を使用して文字列を逆にする
JavaScript で文字列を逆にする

追加のスペースを使用せずに JavaScript の文字列を元の場所に戻すには、さまざまな方法があります。これの利点は、O(1) スペースの複雑さを使用してプログラムを作成できることです。これは、データを保存するためにメモリに余分なスペースが必要ないことを意味します。提供されたのと同じスペース、つまり入力のサイズのみを使用し、そのスペース内で指定された文字列を逆にします。

以下は、JavaScript で文字列を逆にする方法のいくつかです。

JavaScript の組み込み関数を使用して文字列を反転する

JavaScript で利用可能な組み込み関数を使用して、文字列を元の場所に戻す方法を見てみましょう。これを実現できる関数は、split()reverse()join() の 3つです。

以下は、3つの機能のそれぞれが行うことです。

  1. split() は、文字列の各文字を分離し、それを配列に変換します。
  2. reverse() はその配列を受け取り、その中の要素を逆にします。
  3. join() は、reverse() 関数によって反転された文字を結合します。
function reverse(s) {
  return s.split('').reverse().join('');
}

var sss = reverse('adam')
console.log(sss)

出力:

mada

文字列を逆にするには、最初に入力文字列に split() 関数を適用する必要があります。この関数は、文字列を、その文字列のすべての文字を含むオブジェクトに変換します。その後、組み込みの JavaScript 関数 reverse() を使用して文字列を逆にすることができます。この関数は文字列を直接処理しないため、最初に split() 関数を使用して文字列をオブジェクトに変換する必要があります。

これで、すべての文字が逆の順序になっているオブジェクトができました。このオブジェクトを文字列に戻すには、join() 関数を使用できます。この関数は、文字列から各文字を取得し、それを結合して文字列を形成します。

JavaScript で再帰を使用して文字列を逆にする

文字列を逆にする別の方法は、再帰を使用することです。ここでは、str を引数として取る reverse() という名前の関数を作成しました。再帰関数を作成するときは、最初に基本条件を追加する必要があります。基本条件を使用すると、実行中に再帰プログラムを終了できます。プログラムに基本的な条件がない場合、それは無限に実行されますが、これは望ましくありません。これが、ユーザーがこの関数に渡す文字列が空かどうかを確認する必要がある理由です。空の場合は、プログラムを終了します。それ以外の場合は、再帰呼び出しを実行します。

function reverse(str) {
  if (str === '') {
    return '';
  } else {
    return reverse(str.substr(1)) + str.charAt(0);
  }
}

let reverseStringIs = reverse('adam')
console.log(reverseStringIs)

出力:

mada

else の部分では、コードは 1 行しかありません。さらに、このコード行を 2つの部分に分割したと考えることができます(これは、コードを理解できるようにするための単なる仮定です)。最初の部分は reverse(str.subset(1)) で、2 番目の部分は str.charAt(0) です。

最初の部分は adam 全体を取り、インデックス番号から始まるサブセットを取ります。1つまり、d が最初の位置にあるため、dam。そして、2 番目の部分は文字列全体、つまり adam を取り、インデックス 0、つまり a の文字を取得します。

元の文字列から部分文字列をすでに作成しているため、再帰呼び出しを実行してから、この部分文字列を reverse() 関数、つまり adam ではなく dam に渡します。これで、else 部分を実行すると、入力文字列として dam が作成されます。この文字列のサブストリングは、インデックス 1 から始まる substr() 関数を使用して作成します。サブストリングは am になり、str.charAt(0) はインデックス 0 の文字を提供します。d

このプロセスは、文字列全体が空になるまで続きます。この時点で、これはスタックがどのように見えるかです。

再帰スタック

これは、文字がスタックから返されるシーケンスです-m, a, d, a。文字列が空になるとすぐに、プログラムはスタックから要素を 1つずつポップし始め、出力として逆の順序で最終的な文字列 madam を取得します。

著者: Sahil Bhosale
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn