給定一個輸入字串 s,反轉單字的順序。單字被定義為非空格字元的序列。 s 中的單字將至少由一個空格分隔。傳回由單一空格以相反順序連接的單字字串。
請注意,s 可能包含前導或尾隨空格或兩個單字之間的多個空格。傳回的字串應該只有一個空格來分隔單字。請勿包含任何額外空格。
要解決這個問題,我們需要:
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) 額外空間就地解決它,我們可以使用兩指標技術來反轉原始字串中的單字。
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中文網其他相關文章!