- 题目大意:给一句话,把每个单词倒序,然后输出。
- 解法:我是用了一个堆栈,以空格来拆分单词,把每个字母压入堆栈,然后依次输出。
- 参考代码:
/* * 字符串反向,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; }