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;
}
posted @ 2022-08-06 20:58  Vijurria  阅读(69)  评论(0编辑  收藏  举报