蓝桥杯真题讲解:填充(贪心)
- 一、视频讲解
- 二、正解代码
一、视频讲解
蓝桥杯真题讲解:填充(贪心)
二、正解代码
//填充:贪心
#include<bits/stdc++.h>
#define endl '\n'
#define deb(x) cout << #x << " = " << x << '\n';
#define INF 0x3f3f3f3f
using namespace std;
void solve()
{
string s; cin >> s;
vector<bool>st(s.size());//记录i位置是否匹配过
int ans = 0;
for(int i = 0; i < s.size(); i ++)
{
if(s[i] != '?')
{
if(!st[i])
{
if(i - 1 >= 0 and s[i - 1] == s[i] and !st[i - 1])
{
st[i - 1] = true;
st[i] = true;
ans ++;
}
else if(i + 1 < s.size() and s[i + 1] == s[i] and !st[i + 1])
{
st[i] = true;
st[i + 1] = true;
ans ++;
}
}
}
else
{
if(st[i])
continue;
if(i - 1 >= 0 and !st[i - 1])
{
st[i] = true;
st[i - 1] = true;
ans ++;
}
else if(i + 1 < s.size() and !st[i + 1])
{
st[i] = true;
st[i + 1] = true;
ans ++;
}
}
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
t = 1;
//cin >> t;
while(t--)
solve();
}