ホームページ >ウェブフロントエンド >jsチュートリアル >Typescript コーディング クロニクル: 文字列内の単語を反転する
入力文字列 s を指定して、単語の順序を逆にします。単語は、スペース以外の文字のシーケンスとして定義されます。 s 内の単語は少なくとも 1 つのスペースで区切られます。単一のスペースで連結された単語の文字列を逆順で返します。
s には、先頭または末尾のスペース、または 2 つの単語の間に複数のスペースが含まれる場合があることに注意してください。返される文字列には、単語を区切るスペースが 1 つだけ含まれている必要があります。余分なスペースは含めないでください。
この問題を解決するには、次のことを行う必要があります:
function reverseWordsBruteForce(s: string): string { // Split the string by spaces and filter out empty strings let words = s.trim().split(/\s+/); // Reverse the array of words words.reverse(); // Join the words with a single space return words.join(' '); }
このソリューションは、制約を考慮すると効率的です。ただし、単語の配列に追加のスペースが使用されます。
文字列データ型が変更可能で、O(1) 個の追加スペースを使用してその場で解決する必要がある場合は、2 ポインター手法を使用して、元の文字列内の単語を反転できます。
function reverseWordsOptimized(s: string): string { // Trim the string and convert it to an array of characters let chars = s.trim().split(''); // Helper function to reverse a portion of the array in place function reverse(arr: string[], left: number, right: number) { while (left < right) { [arr[left], arr[right]] = [arr[right], arr[left]]; left++; right--; } } // Reverse the entire array of characters reverse(chars, 0, chars.length - 1); // Reverse each word in the reversed array let start = 0; for (let end = 0; end <= chars.length; end++) { if (end === chars.length || chars[end] === ' ') { reverse(chars, start, end - 1); start = end + 1; } } // Join the characters back into a string and split by spaces to remove extra spaces return chars.join('').split(/\s+/).join(' '); }
console.log(reverseWordsBruteForce("the sky is blue")); // "blue is sky the" console.log(reverseWordsBruteForce(" hello world ")); // "world hello" console.log(reverseWordsBruteForce("a good example")); // "example good a" console.log(reverseWordsBruteForce("singleWord")); // "singleWord" console.log(reverseWordsBruteForce(" ")); // "" console.log(reverseWordsOptimized("the sky is blue")); // "blue is sky the" console.log(reverseWordsOptimized(" hello world ")); // "world hello" console.log(reverseWordsOptimized("a good example")); // "example good a" console.log(reverseWordsOptimized("singleWord")); // "singleWord" console.log(reverseWordsOptimized(" ")); // ""
文字列操作:
ツーポイントテクニック:
インプレースアルゴリズム:
このような問題と戦略を実践することで、問題解決スキルを向上させ、さまざまなコーディングの課題に対する準備を整えることができます。
以上がTypescript コーディング クロニクル: 文字列内の単語を反転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。