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; } };
标签:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」