557. 反转字符串中的单词 III
题目要求
示例 1:
输入:s = “Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
示例 2:
输入: s = “Mr Ding”
输出:“rM gniD”
思路:
第一步:让 i 指向起始位置,当 i 不为空格时,就往后挪动,遇到空格就停下来,此时 i 指向空格
第二步:交换反转第一个单词 Let’s 的顺序
第三步:重复1,2步骤。将所有的单词都自己反转。如下
如果是反转每个单词在顺序,那么就在加上第四步。
第四步:整体反转一遍。
C++代码
class Solution {
public:string reverseWords(string s) {int len = s.length();int i = 0;while (i < len) {int start = i;// 1.找到第一个单词,遇到空格就停止while (i < len && s[i] != ' ') {i++;}// 2.反转单词的顺序int left = start;int right = i - 1;while (left < right) {swap(s[left], s[right]);left++;right--;}// 3.此时i还是指向空格的,所以继续让i++,指向下一个单词while (i < len && s[i] == ' ') {i++;}}return s;}
};