一个浪漫的故事--传纸条
题目链接:https://acm.sdut.edu.cn/onlinejudge3/problems/2615
别的队列和栈的题我都懒得传了,这个挺让我眼前一动的;
其实吸引我的不是题目的难度哈哈哈,其实是这道题本身,想当年也是有人给我写过小纸条的哈哈哈=.=;
算了,不感慨了直接上题吧哈哈哈
题目思路:
应用栈来解决,首先传入的是这个字符串,字符串是一定要小心输入的,尤其是用优化,所以说改有的输入空格啊,就一定要有
我们传入字符串之后,如果队列为空就把元素入栈就好了,因为当前栈内没有东西与字符串相匹配,
注意:是倒着匹配的,因为你运行完了会发现正着传入和倒着传入是相反的,而倒着传入是和题目的要求是一致的
然后就开始匹配判断,如果与之相匹配就入栈,不匹配的也入栈用于下一次匹配;
然后这个故事就完美的结束啦
Talk is cheap. Show me the code.
1 #include2 using namespace std; 3 int t; 4 int main() 5 { 6 ios::sync_with_stdio(false); 7 cin.tie(0); 8 cout.tie(0); 9 string s; 10 cin>>t; 11 cin.get();//小心点,是字符串 12 while(t--) 13 { 14 stack<char>q; 15 getline(cin,s); 16 for(register int i=size()-1; i>=0; i--)//注意是倒着,正着是相反的 17 { 18 if(q.empty()) 19 q.push(s[i]); 20 else if(q.top()==s[i]) 21 q.pop(); 22 else q.push(s[i]); 23 } 24 while(!q.empty()) 25 { 26 cout<<q.top(); 27 q.pop(); 28 } 29 cout<<endl; 30 } 31 return 0; 32 }