Acwing. 字符串消除(栈)
后知后觉,这不是跟符号匹配是一样的东西吗???
我傻了
https://www.acwing.com/problem/content/4507/
李华和张红正在玩字符串消除游戏。
游戏规则如下:
给定一个由小写字母构成的字符串 s。
两人轮流进行消除操作,当轮到一人时,其任务是在当前 s 中找到两个连续且相同的字母,并将它们从 s 中消除。例如,当 s 为 abba 时,可以消除 bb,使 s 变为 aa。
第一个无法进行消除操作的选手视为失败。
已知,游戏由李华执先手,且两人都采取最优策略。
请问,李华是否可以获胜。
输入格式
一行,一个字符串 s。
输出格式
如果李华可以获胜,则输出 Yes,否则输出 No。
数据范围
前 5 个测试点满足 1≤|s|≤10。
所有测试点满足 1≤|s|≤105。
输入样例1:
abacaba
输出样例1:
No
输入样例2:
iiq
输出样例2:
Yes
输入样例3:
abba
输出样例3:
No
#include<bits/stdc++.h>
using namespace std;
const int N=200200,M=2002;
int a[N];
int main()
{
cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
string s;
cin>>s;
int sum=0;
stack<char> st;
for(int i=0;i<s.size();i++)
{
if(!st.empty()&&st.top()==s[i])
{
st.pop();
sum++;
}
else st.push(s[i]);
}
//cout<<sum<<endl;
if(sum%2==1) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}