原题链接
题目大意:给一句话,把每个单词倒序,然后输出。
解法:我是用了一个堆栈,以空格来拆分单词,把每个字母压入堆栈,然后依次输出。
参考代码:
/*
* 字符串反向,140ms,188kb
* 单词反向用堆栈是比较方便的,一个个压入,遇到空格再一个个弹出
* 但是不知道为什么耗时这么多,大批的人都是0ms,160kb,难道用字符串处理效率高这么多?
*/
#include<iostream>
#include<string>
#include<stack>
#include<cstdio>
using namespace std;
int main(){
int i,j,n,cases;
string str;
char *p,c[80];
stack<char> word;
cin>>cases;
while(cases--){
cin>>n;
getline(cin,str);
while(n--){
getline(cin,str);
for(i=0;i<str.size();i++){
if(str[i]!=' '){
word.push(str[i]);
}
else{
while(!word.empty()){
cout<<word.top();
word.pop();
}
cout<<' ';
}
}
while(!word.empty()){
cout<<word.top();
word.pop();
}
cout<<endl;
}
if(cases) cout<<endl;
}
return 0;
}