题解 | 最长的AB序列
最长的AB序列
https://www.nowcoder.com/practice/d3c73cbd06ef491bbb50bd7fc51d84c7
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
int main() {
string str;
cin>>str;
int count = 0;
vector<int> aa(str.size()+1);
int i=1;
map<int,int> map1;
map<int,int> map2;
for(auto a:str){
if(a=='A') count++;
else count--;
aa[i-1] = count;
if(map1[count]==0) map1[count] = i;
//if(i==0) map1[count] = 0;
++i;
}
map1[0] = 0;
for(int j = str.size()-1;j>=0;j--){
if(map2[aa[j]]==0) map2[aa[j]] = j+1;
}
if(map2[0]==0) map2[0] = 0;
int max_ = 0;
for(auto it:map1){
int res = map2[it.first]-it.second;
max_ = max(res,max_);
}
cout<<max_<<endl;
return 0;
}
// 64 位输出请用 printf("%lld")
查看27道真题和解析