leetcode 557. Reverse Words in a String III

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

 

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        # split world, for echo one reverse it and join it.
        """
        ans = ""
        flag = True
        for word in s.split(" "):
            if flag:                
                ans += word[::-1]
                flag = False
            else:
                ans += " "+word[::-1]
        return ans
        """
        #return " ".join(w[::-1] for w in s.split(" "))
        ans = ""
        for word in s.split(" "):
            ans += word[::-1] + " "
        return ans.strip()                

个人倾向于一行代码搞定。

解法2: 耗时较" ".join(w[::-1] for w in s.split(" "))

# Here I first reverse the order of the words and then reverse the entire string.

def reverseWords(self, s):
    return ' '.join(s.split()[::-1])[::-1]

 写一个c++的,贪心:

class Solution {
public:
    void reverseWord(string &s, int i, int j) {
        char c;
        while(i < j) {
            c = s[j];
            s[j--] = s[i];
            s[i++] = c;
        }
    }
    
    string reverseWords(string s) {
        int len= s.length();
        for(int i=0; i<len; ) {
            int j = i;
            while (j<len && s[j] != ' ') j+=1;
            reverseWord(s, i, j-1);
            i = j+1;
        }
        return s;
    }
};

 

class Solution {
public:
    string reverseWords(string s) {
        size_t front = 0;
        for(int i = 0; i <= s.length(); ++i){
            if(i == s.length() || s[i] == ' '){
                reverse(&s[front], &s[i]);
                front = i + 1;
            }
        }
        
        return s;
    }
};

 

posted @ 2018-03-05 21:14  bonelee  阅读(212)  评论(0编辑  收藏  举报