leetcode:557. 反转字符串中的单词 III
题目
给定一个字符串 s
,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:s = "Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
输入: s = "God Ding"
输出:"doG gniD"
解答 & 代码
原地修改:遍历字符串 s,找到每个单词的起始位置 start
和结束位置 end
,翻转 s[start, end)
部分
class Solution {
public:
string reverseWords(string s) {
int idx = 0;
while(idx < s.size())
{
int start = idx;
while(idx < s.size() && s[idx] != ' ')
++idx;
int end = idx;
reverse(s.begin() + start, s.begin() + end);
++idx;
}
return s;
}
};
复杂度分析:设字符串长为 N
- 时间复杂度 O(N):
- 空间复杂度 O(1):原地修改
执行结果:
执行结果:通过
执行用时:12 ms, 在所有 C++ 提交中击败了 58.32% 的用户
内存消耗:9.4 MB, 在所有 C++ 提交中击败了 66.78% 的用户