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 @   bonelee  阅读(214)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示