1811 字母栈

来源:互联网 发布:办公鼠标 知乎 编辑:程序博客网 时间:2024/05/29 17:57
 
描述

给定一个字符串,表示各字母的入栈顺序,规定:如果某元素入栈时,栈顶元素和它本身分别是同一个字母的大小写(如A和a,b和B),那么这两个元素将同时出栈。问最终栈是不是空栈。

输入

第一行为一个整数T,表示有T组数据。
以下T行,每行有一个整数n和一个长度为n的字符串,只包含大小写英文字母。

输出

对于每组数据输出一行,如果是空栈,输出"Yes.";否则输出"No."(不含引号)

样例输入
2
10 ABCDEedcba
4 ABab
样例输出
Yes.
No.

 

模拟题

#include <iostream>#include <cstdio>using namespace std;int main(){int number,t;int n;int i,j,flag;char a[10001];char b[10001];cin>>number;for(t=0;t<number;t++){flag=0;scanf("%d %s",&n,&a);if(n%2!=0)cout<<"No."<<endl;else{b[0]=a[0];j=0;for(i=1;i<n;i++){if(b[j]==a[i]+32||b[j]==a[i]-32)j--;elseb[++j]=a[i];}if(j==-1)cout<<"Yes."<<endl;elsecout<<"No."<<endl;}}return 0;}