题目链接:P3370 【模板】字符串哈希 - 洛谷 | 计算机科学教诲新生态
题目难度:普及
解题思路:利用哈希算法,将每一个字符串映射到一个值域较小、可以方便比较的数,然后将哈希值存入到set(不能有重复元素),最后输出set的大小。
代码部分:
- #include<bits/stdc++.h>//万能头文件
- using namespace std;
- typedef unsigned long long ULL;
- const int N = 100010,P = 131;
- int n;
- ULL h[N];
- char s[N];
- set<ULL>st;
- int get_hash(char s[])//哈希函数
- {
- h[0] = 0;
- int len = strlen(s);
- for(int i=0; i<len; i++)
- {
- h[i + 1] = h[i] * P + s[i];
- }
- return h[len];
- }
- int main()
- {
- ios::sync_with_stdio(0);
- cin.tie(0), cout.tie(0);
-
- cin >> n;
-
- while(n--)//读入
- {
- cin >> s;
- st.insert(get_hash(s));//插入set中
- }
- cout<<st.size();
-
- return 0;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |