• Reverse Words in a String


    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.
    提交了好多遍,终于成功了,使用了sstream来分割字符串,使用栈来存放分割之后的字符串,然后出栈就是逆序了。。
     
    C++实现代码:
    #include<iostream>
    #include<string>
    #include<sstream>
    #include<stack>
    using namespace std;
    
    class Solution
    {
    public:
        void reverseWords(string &s)
        {
            if(s.empty())
                return;
            stringstream ss(s);
            s.clear();
            stack<string> st;
            string tmp;
            while(ss>>tmp)
            {
                st.push(tmp);
            }
            while(!st.empty())
            {
                tmp=st.top();
                st.pop();
                if(!st.empty())
                    s+=tmp+' ';
                else
                    s+=tmp;
            }
        }
    };
    
    int main()
    {
        Solution s;
        string ss="  the   sky   is    blue  ";
        cout<<ss.length()<<endl;
        cout<<ss<<endl;
        s.reverseWords(ss);
        cout<<ss.length()<<endl;
        cout<<ss<<endl;
    }

    运行结果:

    运行结果:

  • 相关阅读:
    计算机硬件基础
    元类
    内置函数
    单例模式的三种实现方式
    字符编码
    odoo权限
    odoo api介绍
    odoo 二次开发小记不定时更新
    js与jQuery区别
    Cookie, LocalStorage 与 SessionStorage说明
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4110002.html
Copyright © 2020-2023  润新知