JavaScriptでO(n)の時間計算量とO(1)の空間計算量で単語を反転する方法


方法1: 文字列を配列に変換して反転する この方法では、与えられた文字列を配列に変換し、配列内の単語の順序を反転させます。最後に、配列を文字列に戻します。

function reverseWords(str) {
  const words = str.split(' ');
  const reversedWords = words.reverse();
  return reversedWords.join(' ');
}
const input = 'Hello World! This is a test.';
const reversed = reverseWords(input);
console.log(reversed); // 出力: 'test. a is This World! Hello'

この方法では、文字列を配列に変換するための追加の空間を必要とせず、単語の反転にもO(n)の時間がかかります。

方法2: 文字列内の単語を反転させる この方法では、与えられた文字列内の単語の順序を反転させます。具体的な手順は以下の通りです。

  1. 文字列を反転させる。
  2. 各単語の文字列を反転させる。
function reverseWords(str) {
  const reversedStr = reverseString(str);
  const words = reversedStr.split(' ');
  const reversedWords = words.map(word => reverseString(word));
  return reversedWords.join(' ');
}
function reverseString(str) {
  return str.split('').reverse().join('');
}
const input = 'Hello World! This is a test.';
const reversed = reverseWords(input);
console.log(reversed); // 出力: 'test. a is This World! Hello'

この方法では、文字列全体を反転させるために追加のO(n)の時間がかかりますが、追加の空間を必要としません。

これらの方法を使用することで、JavaScriptでO(n)の時間計算量とO(1)の空間計算量で単語を反転することができます。適切な方法を選択し、必要に応じてコードを調整してください。