贪心

转换思路,考虑提取最长的满足条件的子序列。越早配对成功下次配对就有越多字符可选,每次贪心选择最早成对出现的字符。

#include<bits/stdc++.h>
using namespace std;
constexpr int inf=1000000000;
char s[200005];
void solution(){
    scanf("%s",s+1);
    const int n=strlen(s+1);
    map<char,int> m;
    int ans=n;
    for(int i=1;i<=n;i++) if(++m[s[i]]==2) ans-=2,m.clear();
    printf("%d\n",ans);
}
int T;
int main(){
    scanf("%d",&T);
    while(T--) solution();
    return 0;
}
最后修改:2024 年 05 月 26 日
如果觉得我的文章对你有用,请随意赞赏