单词拼写检查

来源:互联网 发布:ubuntu怎么打开软件 编辑:程序博客网 时间:2024/05/22 09:12

哈希表。。没什么技巧。吐舌头核心是取字符串首、中、尾的字符进行HASH()

#include<iostream>#include<string>using namespace std;const int maxn=1123357;int total;string h[maxn+1];int hash(string x){int t,l,m;l=x.length();m=l/2;t=(x[0]-65)*10000+(x[m]-65)*100+(x[l-1]-65);return t%maxn;}void init(string x){int t=hash(x);while(h[t]!=""&&h[t]!=x){t++;if(t==maxn) t=0;}h[t]=x;}void find(string x){int t=hash(x);while(h[t]!=""&&h[t]!=x){t++;if(t==maxn) t=0;}if(h[t]=="") total++;}int main(void){int i,n,m;string wrd;total=0;cout<<"请输入单词库的单词数:";cin>>n;cout<<"请输入单词:";for(i=1;i<=n;i++){cin>>wrd;init(wrd);}cout<<"请输入待查单词数:";cin>>m;cout<<"请输入待查单词:";for(i=1;i<=m;i++){cin>>wrd;find(wrd);}cout<<"单词拼错数:";cout<<total;return 0;}


0 0