- 我的评价是:贪心即可
从左到右遍历,?优先匹配左边,至于为什么,确实不好讲,可以这样理解,左边如果有奇数个连续的0或1,那么将?变成左边的数字,就可以将左边失配的数字匹配上,右边不管
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
string str;
cin >> str;
int res = 0;
for (int i = 0; i < str.size(); i ++ )
{
if (str[i] == '0' || str[i] == '1')
{
if (i + 1 < str.size() && (str[i + 1] == str[i] || str[i + 1] == '?')) res ++ , i ++ ;
}
else
{
if (i + 1 < str.size()) res ++ , i ++ ;
}
}
cout << res << endl;
return 0;
}