-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReverseWordsInAString.ts
70 lines (63 loc) · 2.27 KB
/
ReverseWordsInAString.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Source : https://leetcode.com/problems/reverse-words-in-a-string/
// Author : francisco
// Date : 2023-12-19
/*****************************************************************************************************
*
* Given an input string s, reverse the order of the words.
*
* A word is defined as a sequence of non-space characters. The words in s will be separated by at
* least one space.
*
* Return a string of the words in reverse order concatenated by a single space.
*
* Note that s may contain leading or trailing spaces or multiple spaces between two words. The
* returned string should only have a single space separating the words. Do not include any extra
* spaces.
*
* Example 1:
*
* Input: s = "the sky is blue"
* Output: "blue is sky the"
*
* Example 2:
*
* Input: s = " hello world "
* Output: "world hello"
* Explanation: Your reversed string should not contain leading or trailing spaces.
*
* Example 3:
*
* Input: s = "a good example"
* Output: "example good a"
* Explanation: You need to reduce multiple spaces between two words to a single space in the reversed
* string.
*
* Constraints:
*
* 1 <= s.length <= 10^4
* s contains English letters (upper-case and lower-case), digits, and spaces ' '.
* There is at least one word in s.
*
* Follow-up: If the string data type is mutable in your language, can you solve it in-place with O(1)
* extra space?
******************************************************************************************************/
/**
* @param {string} s
* @returns {string}
* given an input string, s, return a string of the words in reverse order concatenated by a single space
* NOTE: a word is defined as a sequence of non space characters
* ASSUME: the words in s will be separated by at least one space
* Stub:
function reverseWords(s: string): string {return ""}
* Tests:
* I: s = "the sky is blue" -> O: "blue is sky the"
* I: s = " hello world " -> O: "world hello"
* I: s = "a good example" -> O: "example good a"
* Time Complexity: O(n), where n is the length of s
* Space Complexity O(m), where m is the number of words
* Runtime: 41ms (99.18%)
* Memory: 44.14MB (93.63%)
*/
export function reverseWords(s: string): string {
return s.trim().split(" ").filter(Boolean).reverse().join(" ");
}