方法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: 文字列内の単語を反転させる この方法では、与えられた文字列内の単語の順序を反転させます。具体的な手順は以下の通りです。
- 文字列を反転させる。
- 各単語の文字列を反転させる。
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)の空間計算量で単語を反転することができます。適切な方法を選択し、必要に応じてコードを調整してください。