zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    【codevs1515】 跳
    【bzoj1227】 SDOI2009—虔诚的墓主人
    【bzoj3505】 Cqoi2014—数三角形
    【bzoj1059】 ZJOI2007—矩阵游戏
    【poj2122】 Optimal Milking
    【poj2455】 Secret Milking Machine
    【poj3084】 Panic Room
    【poj2699】 The Maximum Number of Strong Kings
    【bzoj3218】 a + b Problem
    【bzoj3122】 Sdoi2013—随机数生成器
  • 原文地址:https://www.cnblogs.com/bonelee/p/8511413.html
Copyright © 2011-2022 走看看