求优化代码
查看原帖
求优化代码
1288786
meiweid_quanyiang楼主2025/1/19 18:10

n,h长度上限2e5

#include<bits/stdc++.h>
using namespace std;
set<string> ans;
set<string> f;
void str(string a,string b){
    if(f.count(b))return;
    int len=a.size();
    string c=b;
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
//    c[a.size()]=0;
//    d[b.size()]=0;
    //cout<<c<<" "<<d<<"\n";
    bool hlh=1;
    if(a!=b)return;
    f.insert(c);
    ans.insert(c);
    //cout<<hlh<<"\n";
}
int main(){
    //freopen("c.txt","r",stdin);
    cin.tie(0);
    string n,h;
    cin>>n>>h;
    if(n==h){
        cout<<1;
        return 0;
    }
    if(h.size()<n.size()){
        cout<<0;
        return 0;
    }
    //cout<<n<<" "<<h<<"\n";
    int k=0;
    string l="";
    int len1=n.size();
    int len2=h.size();
    for(int j=0;j<len1;j++)l=l+h[k++];
    for(int i=len1;i<=len2;i++){
        str(n,l);
        l=l.erase(0, 1);
        l=l+h[i];

    }
    printf("%d",ans.size());

}

2025/1/19 18:10
加载中...