LeetCode 557 反串字符串中的单词III HERODING的LeetCode之路

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例:

输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”

提示:

在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

解题思路:
看似复杂的题目,因为每一个分解出来的字符串长短不一,不好用数组储存,所以二维数组的方式不推荐,一个非常有想法的思路是,先按照顺序访问字符串,遇到空格或者换行停下,这个时候用一个变量标记此时的位置,另一个变量标记头的位置,类似于指针,覆盖了一块字符串,然后进行交换,接下来照旧做法直到结束,代码如下:

class Solution {
     
public:
    string reverseWords(string s) {
     
        int len = s.size();
        int begin = 0;
        int end;
        for(int i = 0; i < len + 1; i ++){
     
            if(s[i] == ' ' || s[i] == '\0'){
     
                for(end = i - 1; begin < end; begin ++, end --){
     
                    swap(s[begin], s[end]);
                }
                begin = i + 1;
            }
        }
        return s;
    }
};

你可能感兴趣的:(LeetCode,leetcode,字符串,算法,数据结构,c++)