Reverse Words in a String
Question
- leetcode: (151) Reverse Words in a String
- lintcode: (53) Reverse Words in a String
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
Example
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.
题解
- 由第一个提问可知:题中只有空格字符和非空格字符之分,因此空格字符应为其一关键突破口。
- 由第二个提问可知:输入的前导空格或者尾随空格在反转后应去掉。
- 由第三个提问可知:两个单词间的多个空格字符应合并为一个或删除掉。
首先找到各个单词(以空格隔开),根据题目要求,单词应从后往前依次放入。正向取出比较麻烦,因此可尝试采用逆向思维——先将输入字符串数组中的单词从后往前逆序取出,取出单词后即翻转并append至新字符串数组。在append之前加入空格即可。
class Solution:
# @param s, a string
# @return a string
def reverseWords(self, s):
return " ".join(s.split()[::-1])