입력 문자열 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시간 복잡도 분석:
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