leetcode Reverse Words in a String

来源:互联网 发布:网店 淘宝客服招聘 编辑:程序博客网 时间:2024/05/18 09:13

Given an input string, reverse the string word by word.

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

click to show clarification.

Clarification:

  • What constitutes a word?
    A sequence of non-space characters constitutes a word.
  • Could the input string contain leading or trailing spaces?
    Yes. However, your reversed string should not contain leading or trailing spaces.
  • How about multiple spaces between two words?
    Reduce them to a single space in the reversed string.
class Solution {public:    void reverseWords(string &s) {        int length = s.size();        int ptr=0;        stack<char> str;        stack<char> tmp;        while(s[ptr]==' '&&ptr<length){              ptr++;        }        while(ptr<length){            str.push(s[ptr]);            ptr++;        }        s="";        while(!str.empty()&&str.top()==' '){str.pop();}        if(!str.empty()){        while(true){            char tp = str.top();            tmp.push(tp);            str.pop();  if(str.empty()){                while(!tmp.empty()){s+=tmp.top();tmp.pop();}                break;            }            while(str.top()==' '){                str.pop();                if(str.top()==' '){continue;}                while(!tmp.empty()){s+=tmp.top();tmp.pop();}                s+=' ';            }        }    }    }};

去掉中间的空格其实我还没有相同,但乱改通过了,还有VS2012运行结果和OJ运行结果不一致是怎么回事呢?

0 0