字符串的哈希排序

#include <iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;

const int MAXN=1e6+5;
int a[MAXN];
typedef unsigned long long ull;

int main()
{
    int n;
    cin>>n;
    int ans=0,tot=0;
    while(n--)
    {
        ull p=331;//取模数
        ull x=0;
        string ss;
        cin>>ss;
        for(int i=0;i<ss.size();i++)
            x=x*p+ss[i];
        a[++tot]=x;
    }
    sort(a+1,a+1+tot);
    cout<<unique(a+1,a+1+tot)-a-1<<endl;
    //输出不同字符串的个数

    //cout << "Hello world!" << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43870114/article/details/87662670