逆序输出单词 末蓝、 2022-06-10 12:27 205阅读 0赞 # 一、题目描述 # 对字符串中的所有单词进行倒排。 说明: 1、每个单词是以26个大写或小写英文字母构成; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 4、每个单词最长20个字母; ## 输入描述: ## 输入一行以空格来分隔的句子 ## 输出描述: ## 输出句子的逆序 示例1 ## 输入 ## I am a student ## 输出 ## student a am I # **二、解决思路** # 从前遍历,逐个单词插入向量容器中,再逆序输出单词 。 #include<iostream> #include<vector> #include<string> using namespace std; int main(){ string s; vector<string> vec; while(getline(cin,s)){ vec.clear();//清空向量 int i; string temp="";//空串 for(i=0;i<s.size();i++){ if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'){ temp+=s[i]; } else{ if(temp.size()>0){ vec.push_back(temp); temp="";//再次赋值为空串 } } } //如果最后一个单词后面没有任何字符,甚至连标点符号都没有 //这种情况需要把temp中的内容插入向量容器(前提是最后一个是单词) if(temp.size()>0) vec.push_back(temp); for(i=vec.size()-1;i>0;i--){ cout<<vec[i]<<' '; } cout<<vec[0]<<endl; } return 0; }
还没有评论,来说两句吧...