题目
- 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”。
- 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)。
- 对于每个测试示例,要求输出句子中单词反转后形成的句子
分析
- 反转想到使用栈,然后就是解决存储单词的问题。
- 存储单词使用string,读入整句,然后用string的find和substr分割出单词.
- 最后注意输出的格式问题,最后不要多带了空格。
具体代码
#include <string>
#include <stack>
#include <iostream>
using namespace std;
int main(){
string line;
while(getline(cin, line)){
string::size_type space_index, word_start=0;
space_index = line.find(' ', 0);
stack<string> words;
while(space_index != string::npos){
words.push(line.substr(word_start, space_index - word_start));
word_start = space_index + 1;
space_index = line.find(' ', word_start);
}
words.push(line.substr(word_start));
while(true){a
cout << words.top();
words.pop();
if(!words.empty()){
cout << ' ';
}
else{
break;
}
}
cout << endl;
}
}