Given an input string, reverse the string word by word.
For example,
Given s = “the sky is blue”,
return “blue is sky the”.Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
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.
翻转字符串,可是字符串中的单词字母顺序不变,还要注意空格哦。Python代码例如以下:
class Solution:
# @param s, a string
# @return a string
def reverseWords(self, s):
if len(s) == 0:
return ""
ret = ""
start = False
begin = end = 0
start = False
for i in range(len(s)):
if s[len(s) - i - 1] != '' and s[len(s) - i - 1] != ' ' and end == 0:
end = len(s) -i
if end != 0 and (s[len(s) - i - 1] == ' ' or i == (len(s) - 1)):
begin = len(s) -i
if not start:
if i == (len(s) - 1) and s[begin -1] != ' ':
begin -= 1
ret += s[begin:end]
start = True
else:
if i == (len(s) - 1) and s[begin -1] != ' ':
begin -= 1
ret += " " + s[begin:end]
begin = 0
end = 0
return ret