点击此处查看原题文章来源:https://www.toymoban.com/news/detail-799469.html
*思路:首先要求 00 11 尽可能的多,所以尽可能多的多配对,配对只在i , i + 1之间发生,所以只需要关注str[i] 和 str[i + 1]即可,如果str[i] == str[i + 1] ,那么一定配对,res ++ , 否则说明只有 str[i] == 0 && str[i + 1] == 1 或者 str[i] == 1 && str[i + 1] == 0 两种情况,对于这种情况直接跳过,如果str[i] 或者 str[i + 1]中的某一个是?的话,那么一定可以和下一个字符匹配,所以res++,如果是??,那么随便是 11 和 00 都可以,不必担心后面的数,假如??00 = 2 , ?? 01 = 1 ,?? 11 = 2,??10 = 1 ,说明当前的 str[i] 和 str[i + 1]无关的。所以只需分 str[i] == str[i +1] 和 str[i] 或str[i + 1] 中有一个为?即可 文章来源地址https://www.toymoban.com/news/detail-799469.html
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6 + 10;
int main()
{
string str;
cin >> str;
int res = 0;
for(int i = 0 ; i < str.size() - 1 ;i ++)
{
if(str[i] == str[i + 1])
{
res ++;
i ++;
}
else if(str[i + 1] == '?' || str[i] == '?')
{
res ++;
i ++;
}
}
cout << res << endl;
return 0;
}
到了这里,关于蓝桥杯C组-填充-贪心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!