反转字符串内的单词顺序

题:输入一个英文字符串s,翻转句子中单词的顺序,但单词内的字符顺序不变,标点符号按字符处理,例如“I am a student.” 则输出结果为“student. a am I”。

注意:如果字符串的起始和末尾包含空格,则输出结果不包含;若两个相邻单词之间包含多个空格,则仅输出一个空格。

分析:建立一个字符串栈,将一个完整的单词视为一个整体,将给定字符串全部压入栈中,然后逐个弹出,在单词之间添加一个空格。

class Solution
{
  public:
  string reverseWords(string s)
  {
    stack<string> words;
    string ans="";
    string word="";//单词
    for(int i=0;i<s.size();i++)
    {
       word="";
       while(i<s.size() && s[i]!=' ')
       {
          word+=s[i];
          i++;
       }
       if(word.size()>0)
       {
         words.push(word);
       }
    }
    while(!words.empty())
    {
       ans+=words.top();
       ans+=" ";
       words.pop();
    }
    ans.erase(ans.end()-1);
    return ans;
  }
}; 
发布了55 篇原创文章 · 获赞 1 · 访问量 741

猜你喜欢

转载自blog.csdn.net/weixin_43086349/article/details/104730701
今日推荐