LeetCode 0557. 反转字符串中的单词 III
Posted Tisfy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 0557. 反转字符串中的单词 III相关的知识,希望对你有一定的参考价值。
【LetMeFly】557.反转字符串中的单词 III
力扣题目链接:https://leetcode.cn/problems/reverse-words-in-a-string-iii/
给定一个字符串 s
,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入:s = "Let's take LeetCode contest" 输出:"s'teL ekat edoCteeL tsetnoc"
示例 2:
输入: s = "God Ding" 输出:"doG gniD"
提示:
1 <= s.length <= 5 * 104
s
包含可打印的 ASCII 字符。s
不包含任何开头或结尾空格。s
里 至少 有一个词。s
中的所有单词都用一个空格隔开。
方法一:模拟
首先,遍历并找到字符串中的所有的空格
接着,翻转两个空格之间的字符串即可。
C++
使用一个变量begin记录这个“子字符串”开始的下标
接着遍历原始字符串,如果遍历到了原始字符串的末尾或者空格,就翻转这个子字符串,并更新begin的值
- 时间复杂度 O ( l e n ( s ) ) O(len(s)) O(len(s))
- 空间复杂度 O ( 1 ) O(1) O(1)
Python
首先将原始字符串以空格分隔
s.split()
接着,使用join
函数,以空格为间隔按顺序添加“分隔后字符列表中的每一个字符 的 反向形式”
' '.join(i[::-1] for i in s.split())
其中 i i i是“分隔后字符列表中的每一个字符”, i [ : : − 1 ] i[::-1] i[::−1]是其翻转后的形式。
- 时间复杂度 O ( l e n ( s ) ) O(len(s)) O(len(s))
- 空间复杂度 O ( l e n ( s ) ) O(len(s)) O(len(s))
AC代码
C++
class Solution
public:
string reverseWords(string& s)
int begin = 0;
for (int i = 0; i <= s.size(); i++)
if (i == s.size() || s[i] == ' ')
reverse(s.begin() + begin, s.begin() + i);
begin = i + 1;
return s;
;
Python
class Solution:
def reverseWords(self, s: str) -> str:
return ' '.join(i[::-1] for i in s.split())
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/129526011
以上是关于LeetCode 0557. 反转字符串中的单词 III的主要内容,如果未能解决你的问题,请参考以下文章
JS leetcode 反转字符串中的单词 III 题解分析