CodeForces——Game with string(STL stack栈)

Two people are playing a game with a string ss, consisting of lowercase latin letters.

On a player‘s turn, he should choose two consecutive equal letters in the string and delete them.

For example, if the string is equal to "xaax" than there is only one possible turn: delete "aa", so the string will become "xx". A player not able to make a turn loses.

Your task is to determine which player will win if both play optimally.

Input

The only line contains the string ss, consisting of lowercase latin letters (1≤|s|≤1000001≤|s|≤100000), where |s||s| means the length of a string ss.

Output

If the first player wins, print "Yes". If the second player wins, print "No".

Examples

input

Copy

abacaba

output

Copy

No

input

Copy

iiq

output

Copy

Yes

input

Copy

abba

output

Copy

No
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 int main()
 5 {
 6     string str;
 7     stack<char> s;
 8     cin>>str;
 9     int num = 0;
10     for(int i=0;i<str.length();i++)
11     {
12         //判断是否为空一定要放在前面
13         if(!s.empty() && str[i]==s.top())
14         {
15             num++;
16             s.pop();
17         }
18         else{
19             s.push(str[i]);
20         }
21     }
22     if(num%2==0)
23     {
24         cout<<"No"<<endl;
25     }else{
26         cout<<"Yes"<<endl;
27     }
28     return 0;
29 }

原文地址:https://www.cnblogs.com/tonyyy/p/10307010.html

时间: 2024-10-01 05:00:48

CodeForces——Game with string(STL stack栈)的相关文章

STL --&gt; stack栈

stack栈 c++stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO) 使用该容器时需要包含#include<stack>头文件: 定义stack对象的示例代码如下: stack<int>s1; stack<string>s2; stack的基本操作有: 1 s.empty() 如果栈为空返回true,否则返回false 2 s.size() 返回栈中元素的个数 3 s.pop() 删除栈顶元素但不返回其值 4 s.top() 返回栈顶的元素

STL——Stack栈

首先,堆栈是一个线性表,插入和删除只在表的一端进行.这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom).堆栈的元素插入称为入栈,元素的删除称为出栈.由于元素的入栈和出栈总在栈顶进行,因此,堆栈是一个后进先出(Last In First Out)表,即 LIFO 表c++ stl栈stack头文件为 #include <stack> 定义栈  stack<type(char,int,string,double,float)> s; c++ stl栈5个最

【STL】栈stack

栈stack 头文件与定义 #include<stack> stack<long long>mystack;    //以下以mystack为例 用法 1.将元素a入栈:mystack.push(a); 2.将栈顶元素弹栈/出栈:mystack.pop(); 3.判断栈是否为空:mystack.empty() 4.栈的长度:cout<<stack.size(); 5.访问栈顶元素:cout<<stack.top(); 注意事项 1.在出栈或者访问栈顶元素之前

STL 中栈的使用方法(stack)

基本操作: push(x)  将x加入栈中,即入栈操作 pop()  出栈操作(删除栈顶),只是出栈,没有返回值 top()  返回第一个元素(栈顶元素) size()  返回栈中的元素个数 empty()  当栈为空时,返回 true 使用方法: #include <stack> using namespace std; 定义方法为: stack<int>s1;          //入栈元素为 int 型 stack<string>s2;     // 入队元素为s

STL - stack(栈)

Stack简介 stack是堆栈容器,是一种"先进后出"的容器. stack是简单地装饰deque容器而成为另外的一种容器. #include <stack> stack对象的默认构造 stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT; stack <int> stkInt; //一个存放int的stack容器. stack <float> stkFloat; //一个存放float的stack容器

STL系列之二 stack栈

栈(statck)这种数据结构在计算机中是相当出名的.栈中的数据是先进后出的(First In Last Out, FILO).栈只有一个出口,允许新增元素(只能在栈顶上增加).移出元素(只能移出栈顶元素).取得栈顶元素等操作.在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了.因此实现非常的方便.下面就给出栈的函数列表和VS2008中栈的源代码,在STL中栈一共就5个常用操作函数(top().push().pop(). size().empty() ),很好记的.

STL中栈和队列的使用方法

 STL 中优先队列的使用方法(priority_queu) 基本操作: empty() 如果队列为空返回真 pop() 删除对顶元素 push() 加入一个元素 size() 返回优先队列中拥有的元素个数 top() 返回优先队列对顶元素 在默认的优先队列中,优先级高的先出队.在默认的int型中先出队的为较大的数. 使用方法: 头文件: #include <queue> 声明方式: 1.普通方法: priority_queue<int>q; //通过操作,按照元素从大到小的顺

Stack(栈)的简单使用

import java.util.Stack; import org.junit.Before; import org.junit.Test; /** * Stack(栈)继承了Vector类,底层实现是数组. * 此处只介绍了Stack自己定义的方法,父类中的方法不再一一介绍. */ public class TestStack { // 定义一个栈 Stack<String> stack; @Before public void before() { // 实例化栈变量 stack = n

基于数组实现Java 自定义Stack栈类及应用

栈是存放对象的一种特殊容器,在插入与删除对象时,这种结构遵循后进先出( Last-in-first-out,LIFO)的原则.java本身是有自带Stack类包,为了达到学习目的已经更好深入了解stack栈,自己动手自建java stack类是个很好的学习开始: 自建Java Stack 类 Stack 类: 1 package com.stack; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 6 /** 7 * St