华为机试 单词倒排

#include<iostream>
#include <vector>
#include "bits/stdc++.h"
using namespace std;


int main()
{
    string s;
    getline(cin,s);
    vector<string> vecstr;
    string res = "";
    for(int i=0;i < s.size();i++){
        if(s[i] == ' '|| !((s[i] >= 'a'&&s[i] <= 'z')||(s[i] >= 'A'&&s[i] <= 'Z'))){
            if(res != ""){
                vecstr.push_back(res);
                res = "";
            }
            else{
                continue;
            }
        }
        else{
            res += s[i];
        }
    }
    if(res != "") vecstr.push_back(res);

    for(int i=vecstr.size()-1;i >= 0;i--){
        cout << vecstr[i];
        if(i!=0) cout << " ";
    }

    return 0;
}

题目描述

对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;

输入描述:

输入一行以空格来分隔的句子

输出描述:

输出句子的逆序

示例1

输入

复制
I am a student

输出

复制
student a am I
原文地址:https://www.cnblogs.com/cunyusup/p/14266784.html