是否有更简单做法
查看原帖
是否有更简单做法
549418
hopeless_hope楼主2022/12/13 23:40

RT 萌新刚学字符串问题

看别人的提交记录都只有400B一下 我写了800B

有没有大佬帮忙看看哪里是无用的 或者改怎么改进

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n,ans;
string s,s1[10005];
unsigned long long base=13331,k[100005];
string sortx(string s){
    int a[105];
    memset(a,0,sizeof(a));
    int len=s.length();
    for(int i=0;i<len;i++){
        a[i]=s[i]-'A'+1;
    }
    sort(a,a+len);
    for(int i=0;i<len;i++){
        s[i]=(char)(a[i]+'A'-1);
    }
    return s;
}
int hashx(string s){
    int len=s.length();
    unsigned long long res;
    for(int i=0;i<len;i++){
        res=res*base+s[i];
    }
    return res;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s;
        s=sortx(s);
        k[i]=hashx(s);
    }
    sort(k+1,k+n+1);
    /*for(int i=1;i<=n;i++){
        cout<<k[i]<<endl;
    }*/
    for(int i=1;i<=n;i++){
        if(k[i]!=k[i-1]) ans++;
    }
    cout<<ans<<endl;
    return 0;
}
2022/12/13 23:40
加载中...