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;
        }
    };
  • 相关阅读:
    帆软报表实现全选全不选的功能
    knowledge_others
    skills_kafka
    skills_operation
    problems_others
    skills_windows
    c语言标识符
    快速排序法
    字符串处理scanf("%d%*c",&n);
    Byte.parseByte(String s,int radix)的解释
  • 原文地址:https://www.cnblogs.com/bonelee/p/8511413.html
Copyright © 2011-2022 走看看