描述
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
输入描述:
输入一行以空格来分隔的句子
输出描述:
输出句子的逆序
思路一:
使用栈的先进后出的特点,或者使用vector,之后逆序输出两种方式。
#include <iostream>
#include <string>
#include <stack>
using namespace std;
//处理字符串
void manageStr(string str){
stack<string> st; //定义栈,先进后出
string temp_str;
for(int i=0;i<str.size();i++){
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')){ //把字母进行拼接
temp_str+=str[i];
}else{
if(temp_str!=" "){ //遇到空格处理,把拼接的单词压入栈
st.push(temp_str);
temp_str.clear();
}
}
if (i == str.size()-1) st.push(temp_str); // 最后一个字符放入栈中
}
while(!st.empty()){
cout << st.top() <<" ";
st.pop();
}
}
int main(){
string str; //定义用来获取字符串数据
getline(cin, str); //获取字符串上面一行数据
manageStr(str); //处理字符串
return 0;
}
// int main(){
// string str,result;
// while(cin>>str){
// str += " "+result;
// result = str;
// }
// cout << str;
// return 0;
// }