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”.

  • 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
posted on 2016-02-24 10:39  gcczhongduan  阅读(141)  评论(0编辑  收藏  举报