贪心,多组模拟之后可以得到ans = abs(ones - zeros);
因为一个数字的旁边只有两种情况, 要么相消,要么不变。所以用1的数量减去0的数量然后取绝对值即可得到答案。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
string str;
int n;
cin >> n >> str;
int ones = 0, zeros = 0;
for(auto i : str){
if(i == '1'){
ones++;
}
else{
zeros++;
}
}
cout << abs(ones - zeros) << endl;
return 0;
}
模拟,借助栈来模拟,从第一个字符开始入栈,满足条件就出栈。注意栈空的时候要直接入栈。
#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;
stack<int > s;
int main(){
int n;
string str;
cin>> n>> str;
for(auto i : str){
if(s.empty()){
s.push(i - '0');
}
else{
if(i - '0' != s.top()){
s.pop();
}
else{
s.push(i - '0');
}
}
}
cout << s.size()<< endl;
return 0;
}