-
Notifications
You must be signed in to change notification settings - Fork 0
/
151_reverse_words_in_a_string.py
78 lines (59 loc) · 2.06 KB
/
151_reverse_words_in_a_string.py
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
71
72
73
74
75
76
77
78
'''
151. Reverse Words in a String
Given an input string, reverse the string word by word.
Example 1:
Input: "the sky is blue"
Output: "blue is sky the"
Example 2:
Input: " hello world! "
Output: "world! hello"
Explanation: Your reversed string should not contain leading or trailing spaces.
Example 3:
Input: "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.
Note:
A word is defined as a sequence of non-space characters.
Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.
You need to reduce multiple spaces between two words to a single space in the reversed string.
'''
class Solution:
'''
approach 1
1 liner easy
'''
# return " ".join(reversed(s.split()))
'''
approach 2
if reversed isnt available to use, use [::-1]
'''
# return (" ".join(s.split()[::-1]))
'''
approach 3
if reversed and [::-1] arent available for use
First reverse entire string, then iterate over reversed string
and again reverse order of characters within a word. Append each word to words.
'''
def reverseWords(self, s):
word = ""
words = ""
s = s[::-1]
for j, i in enumerate(s):
# character is not space, a current word exists,
# and previous character is space, e.g. i=b in " a b":
if i != " " and word != "" and s[j-1] == " ":
# add current word to words and append " " to later add this i
words += (word + " ")
word = i
# character is not space, but it's either first character in string
# or is part of current word, e.g. i=b in "b", " b" "ab", "a ab "
elif i != " ":
word = i + word
else:
continue
words += word
return(words)
if __name__ == '__main__':
# begin
s = Solution()
print(s.reverseWords("the sky is blue"))