[leetcode] 186. Reverse Words in a String II 解题报告

来源:互联网 发布:java架构师学习路线 编辑:程序博客网 时间:2024/06/05 02:45

题目链接: https://leetcode.com/problems/reverse-words-in-a-string-ii/

Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.

The input string does not contain leading or trailing spaces and the words are always separated by a single space.

For example,
Given s = "the sky is blue",
return "blue is sky the".

Could you do it in-place without allocating extra space?

Related problem: Rotate Array


思路: 两次翻转即可, 单词翻转一次, 然后整体翻转一次. 这题比较好的是没有多余的空格, 所以还比较好处理.

代码如下: 

class Solution {public:    void reverseWords(string &s) {        if(s.size()==0) return;        int i= 0, len =s.size(), right = 0;        while(i < len)        {            while(right < len && s[right] != ' ') right++;            reverse(s.begin()+i, s.begin()+right);            i = ++right;        }        reverse(s.begin(), s.end());    }};


0 0
原创粉丝点击