题解 | #单词倒排#

单词倒排

http://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836

 
#include <iostream>
#include <string>

using namespace std;

class Solution
{
    public:
        void Word_Inv_Sort(const string& str)
        {
            string ans;
            int n = str.size();
            int p1,p2;
            p1 = p2 = n - 1;
            while(p2 >= 0)
            {
                //如果p1所指向的位置为字母字符
                if(Is_Alphabet(str[p1]))
                {
                    p1--;//一直往前递减
                }
                else
                {
                    //当前字符不为空格字符
                    if(str[p1] != ' ')
                    {
                         int Len = p2 - p1;
                         ans += str.substr(p1+1,Len);//取字符串
                         ans += ' ';                         
                         p2 = p1 - 1;
                         p1 = p2;
                    }
                    else
                    {
                        //当前字符为空格字符,当且上一字符也不为空格字符时(即:处理连续多个空格情形)
                        if( str[p1+1] != ' ' )
                        {
                            int Len = p2 - p1;
                            ans += str.substr(p1+1,Len);//取字符串
                            ans += ' ';
                            p2 = p1 - 1;
                            p1 = p2;
                        }
                    }
    
                }
            }
            cout << ans << endl;
        }
        bool Is_Alphabet(char c)
        {
            if(((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')) )
                return true;
            return false;
        }
};

int main()
{
    string str;
    Solution s;
    while(getline(cin, str))
    {
        s.Word_Inv_Sort(str);
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 14:32
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务