题目描述
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
输入描述:
输入一行以空格来分隔的句子
输出描述:
输出句子的逆序
示例1
输入
I am a student
输出
student a am I
#include<bits/stdc++.h>
using namespace std;
int main()
{
string sentence;
getline(cin,sentence);
{
vector<string> words;
int len=sentence.size();
string tmp="";
for(int i=0;i<len;i++)
{
if((sentence[i]>='A'&&sentence[i]<='Z')||(sentence[i]>='a'&&sentence[i]<='z'))
{
tmp+=sentence[i];
}
else
{
if(tmp.size()>0)//长度大于0才压入队列,空字符串输出也是错的
{
words.emplace_back(tmp);
tmp="";
}
continue;//空格之后输出的时候加上
}
}
if(tmp.size()>=1)
{
words.emplace_back(tmp);
tmp="";
}
for(int i=words.size()-1;i>0;i--)
{
cout << words[i] << " ";
}
cout<<words[0]<<endl;
}
return 0;
}