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% 的用户
