求0 和 1 的个数差
楼上的栈做法可以写短一点
#include "bits/stdc++.h"
using namespace std;
using u32 = uint32_t;
int main() {
u32 t;
cin >> t;
string str;
vector<char> seq;
for (u32 _ = 0; _ != t; ++_) {
cin >> str;
seq.resize(1, 0); // 用来去掉判空检测的哨兵
for (auto ch : str) {
if ((ch ^ seq.back()) == 1) {
seq.pop_back();
} else {
seq.push_back(ch);
}
}
cout << seq.size() - 1 << '\n';
}
}
不是很难的题目,可以试着用栈模拟一下
#include <bits/stdc++.h>
using namespace std;
int main()
{
int cases;
int* anslist;
scanf("%d",&cases);
anslist=(int*)malloc(cases*sizeof(int));
for(int i=0;i<cases;i++)
{
char mystr[1001];
stack<char> mystack;
unsigned int len;
scanf("%s",mystr);
len=strlen(mystr);
for(unsigned int j=0;j<len;j++)
{
if(mystack.empty())
mystack.push(mystr[j]);
else
{
if(mystack.top()!=mystr[j])
mystack.pop();
else!
mystack.push(mystr[j]);
}
}
anslist[i]=mystack.size();
}
for(int i=0;i<cases;i++)
cout<<anslist[i]<<endl;
return 0;
}
感谢!