Description
有些字符串,如果满足下面的性质,则称为成对的字符串: a. 所有的字符在字符串中出现偶数次 b. 每一对相同的字符之间不会有出现奇数次的字符 现在给你一些字符串,请判断这些字符串是否为成对的字符串。
输入:
第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例。每行为一个字符串(长度不超过1000个字符)。
输出:
每行输出一个测试用例的结果。如果是,输出Yes,否则输出No。
思路
维护一个栈,遇到相同元素出栈否则入栈,最后查看栈是否为空即可,注意c++没有一键清空栈的函数,省心可以直接在for循环里面定义栈
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string str;
int n;
cin>>n;
while(n--){
cin>>str;
if(str.size()%2){
printf("No\n");
continue;
}
stack <char> ptr;
for(int i=0;i<str.size();i++){
if(ptr.empty()){
ptr.push(str[i]);
}else{
if(ptr.top()==str[i]){
ptr.pop();
}else{
ptr.push(str[i]);
}
}
}
if(ptr.empty()==0){
printf("No\n");
}else{
printf("Yes\n");
}
}
return 0;
}
|