JustOj 2038: 叶神的字符串

时间:2021-01-09 07:19:03
题目描述

众所周知,ACS协会会长叶神学习特别好,算法能力也强,作为一个弱渣的大豪哥特别崇拜叶神,觉得‘Y’‘S’这两个字符特别厉害,所以大豪哥的一个键盘上就只有Y,S两个键,大豪哥用这个键盘打出了一个字符串s,但是他特别的不满意,所以他想改变字符串s中的一个字符(也可以不改变),使得字符串s中可以截取出最大数量的“YS”

输入

多组输入至文件结尾。
每组测试数据输入一串由'Y','S'组成的字符串。(字符串长度最多为10000)

输出

输出至多一次修改后最多有多少个“YS”

样例输入
YYYS
样例输出
2

题解:查找YS的字符片段,查到了就把它置为空格,遍历完了一遍以后,最后在查找有没有不是空格但是前后相同的转发片段
 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
#include <queue>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
const int N=1e6+;
const int mod=1e9+;
int main()
{
string s;
while(cin>>s){
int t=;
for(int i=;i<s.length();i++){
if(s[i]=='Y'&&s[i+]=='S'){
t++;
s[i]=s[i+]=' ';
}
}
for(int i=;i<s.length();i++){
if(s[i]!=' '&&s[i]==s[i+]){
t++;
break;
}
}
cout<<t<<endl;
}
return ;
}