입력 문자열 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) 추가 공간을 사용하여 해당 위치에서 해결해야 하는 경우 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(" ")); // ""
문자열 조작:
2점슛 기법:
내부 알고리즘:
이러한 문제와 전략을 연습함으로써 문제 해결 능력을 향상시키고 다양한 코딩 과제에 더 잘 대비할 수 있습니다.
위 내용은 Typescript Coding Chronicles: 문자열의 역방향 단어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!