1.反转字符串中的单词
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:原地算法

class Solution {
public:
    string reverseWords(string s) {
        //原地交换,注意边界条件写好
        int len=s.length();
        int i=0;
        int start,left,right;
        while(i<len)
        {
            start=i;//题目里第一个字符肯定不是空格
            while(s[i]!=' '&&i<len)
            {
                i++;
            }//找到第一个单词
            left=start;right=i-1;
            while(left<right)
            {
                swap(s[left],s[right]);
                left++;
                right--;
            }//交换
            while(s[i]==' '&&i<len)
            {
                i++;
            }//走到下一个单词头
        }
        return s;
    }
};