字符串的hash进阶(算法笔记)
题目:给出N个只有小写字母的字符串,求其中不同的字符串的个数
set总会自动将重复的数字删去,因此选择用set
#include<iostream>
#include<string>
#include<set>
using namespace std;
set<int> st;
const int MOD=100000007;
const int P=10000019;
long long hashFunc(string str)
{
int H=0;
for(int i=0;i<str.length();i++){
H=H*P+(str[i]-'a')%MOD;
}
return H;
}
int main(){
string str;
while(cin>>str&&str!="#"){
long long id=hashFunc(str);
st.insert(id);
}
printf("%d\n",st.size());
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)