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

时间:2020-8-31 作者:admin


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

示例:

输入:“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;
    }
};
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。