Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Clarification:
把字符串里的单词反转过来,注意要去掉多余的空格~最直接的方法是把字符串按空格分开,把得到的单词存到数组里,然后把单词反转过来得到结果~如果直接调用python的split()函数,代码就很简洁,如下~
- 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.
class Solution:
# @param s, a string
# @return a string
def reverseWords(self, s):
if s is None or len(s) == 0: return ""
return ' '.join(s.split()[::-1])
也可以不调用split()等这些内置的函数~从后往前扫描字符串,记录每个单词的起点和终点位置,加到数组words中,然后再转换成要求的字符串~
class Solution:
# @param s, a string
# @return a string
def reverseWords(self, s):
if s is None or len(s) == 0: return ""
words = []; res = ''
i = len(s) - 1
while i >= 0:
if s[i] == ' ':
i -= 1
else:
end = i; start = end - 1
while start >= 0 and s[start] != ' ':
start -= 1
words.append(s[start + 1: end + 1])
i = start
for i in xrange(len(words)):
if i != len(words) - 1:
res += words[i] + ' '
else:
res += words[i]
return res
这题还有另外一种思路,先把整个字符串反转并去掉多余的空格,然后再对里面的每一个单词进行反转~