入力文字列 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時間計算量の分析:
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(" ")); // ""
文字列操作:
ツーポイントテクニック:
インプレース アルゴリズム:
このような問題と戦略を実践することで、問題解決スキルを向上させ、さまざまなコーディングの課題に対する準備を整えることができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3