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.
MY SOLUTION:
思路:使用Python的话,将字符串split成若干个子元素为单词的List,然后reverse即可,要注意字符串为空 '' 的特殊情况
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
s = s.split()
s.reverse()
r = ''
if len(s) == 0 : return ''
for item in s:
r = r+' '+item if r else item
return r
但是这么做的空间复杂度是O(N) 要做到O(1)就要原地逆置,不同于之前是逆序单词顺序不逆序单词内字母顺序,这次是先逆序单词内字母顺序,再逆序整个字符串。用C语言,因为python不能直接对字符串修改,代码如下: