Reverse Words in a String

来源:互联网 发布:理工男 知乎 编辑:程序博客网 时间:2024/05/25 01:36

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) {       stack <char> word1;       stack <char> word2;       int i,j,len = s.size();       //string res = "";         if(s == "") return;       for(j=0; j<len ;j++){           if(s[j]==' ') continue;           for(i=j; i<len && s[i] != ' '; i++)               word2.push(s[i]);            while(!word2.empty()){                word1.push(word2.top());                word2.pop();            }            if(i<len) word1.push(' ');            j=i;       }       if(word1.empty()){           s="";           return;       }       while(!word1.empty() && word1.top() == ' ') word1.pop();       i=0;       while(!word1.empty()){           s[i]=word1.top();           word1.pop();           i++;       }       s.resize(i,' ');    }};


0 0
原创粉丝点击