zoukankan      html  css  js  c++  java
  • 字符串哈希

    【题目描述】

    给定N个字符串,询问有多少个不同的字符串。

    【输入描述】

    第一行输入一个整数N,表示字符串个数;

    接下来N行,每行输入一个字符串。

    【输出描述】

    输出一个整数,表示不同字符串个数。

    【输入样例】

    5

    abc

    aaaa

    abc

    abcc

    12345

    【输出样例】

    4

    【数据范围及提示】

    对于30%的数据,N <= 10;

    对于70%的数据,N <= 1000;

    对于100%的数据,N <= 10000,L <= 1500。

    源代码:
    
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #define INF 1000007
    using namespace std;
    struct Node
    {
        int Next;
        string S;
    }Edge[1000007];
    string S;
    int n,Sum(0),Num(0),Head[1000007]={0};
    bool Hash()
    {
        int T(0);
        for (int a=0;a<S.length();a++)
          T=T*33+S[a]; //似乎33针对长度,S[]针对字符。
        T=abs(T%INF); //自然溢出Hash。
        for (int a=Head[T];a;a=Edge[a].Next) //string吃香的边表存储。
          if (Edge[a].S==S)
            return false;
        Edge[++Num].S=S;
        Edge[Num].Next=Head[T];
        Head[T]=Num;
        return true;
    }
    int main()
    {
        scanf("%d
    ",&n);
        for (int a=0;a<n;a++)
        {
            cin>>S; //string看来只能用cin()。
            if (Hash())
              Sum++;
        }
        printf("%d",Sum);
        return 0;
    }
  • 相关阅读:
    yum install nginx
    逻辑分区增加空间 vm中
    pbspro build rpm and installation
    centos 6 and 7 to modify hostname
    activeMQ
    cgo在mac上编译
    redis学习
    Spring Boot 2+gRPC 学习系列1:搭建Spring Boot 2+gRPC本地项目
    KumuluzEE
    前端实现“查看更多”效果
  • 原文地址:https://www.cnblogs.com/Ackermann/p/6062301.html
Copyright © 2011-2022 走看看