Given an input string, reverse the string word by word.
For example,
Given s = "
return "
Given s = "
the sky is blue",return "
blue is sky the".
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
Solution:
We implement it as a state-machine with two states
where in the transition we add the word or mark the beginning.
class Solution:
# @param s, a string
# @return a string
def reverseWords(self, s):
solution = []
inWord = False
for i in range(0, len(s)):
if (s[i]==' ' or s[i]=='\t') and inWord:
inWord = False
solution.insert(0, s[start:i])
solution.insert(0, ' ')
elif not (s[i]==' ' or s[i]=='\t' or inWord):
inWord = True
start = i
if inWord:
solution.insert(0, s[start:len(s)])
solution.insert(0, ' ')
if len(solution)>0:
solution.pop(0)
return ''.join(solution)

No comments :
Post a Comment