力扣题目链接: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
中的所有单词都用一个空格隔开。首先,遍历并找到字符串中的所有的空格
接着,翻转两个空格之间的字符串即可。
使用一个变量begin记录这个“子字符串”开始的下标
接着遍历原始字符串,如果遍历到了原始字符串的末尾或者空格,就翻转这个子字符串,并更新begin的值
首先将原始字符串以空格分隔
s.split()
接着,使用join
函数,以空格为间隔按顺序添加“分隔后字符列表中的每一个字符 的 反向形式”
' '.join(i[::-1] for i in s.split())
其中iii是“分隔后字符列表中的每一个字符”,i[::−1]i[::-1]i[::−1]是其翻转后的形式。
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;}
};
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