Reverse Words in a String

Question

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.

题解

  1. 由第一个提问可知:题中只有空格字符和非空格字符之分,因此空格字符应为其一关键突破口。
  2. 由第二个提问可知:输入的前导空格或者尾随空格在反转后应去掉。
  3. 由第三个提问可知:两个单词间的多个空格字符应合并为一个或删除掉。

首先找到各个单词(以空格隔开),根据题目要求,单词应从后往前依次放入。正向取出比较麻烦,因此可尝试采用逆向思维——先将输入字符串数组中的单词从后往前逆序取出,取出单词后即翻转并append至新字符串数组。在append之前加入空格即可。

class Solution:
    # @param s, a string
    # @return a string
    def reverseWords(self, s):
        return " ".join(s.split()[::-1])

results matching ""

    No results matching ""