PKU 1035 Spell checker(Vector+String应用)
题目大意:原题链接
1输入一个字符串,如果字典中存在该字符串,直接输出,否则;
2.删除,替换,或插入一个字母。如果使得输入字符串==字典中已经有的单词,输出该单词,否则。
3.直接输入下一个字符串,继续匹配.
#include<vector> #include<string> #include<iostream> using namespace std; string s; int main(){ vector<string> dict; while(cin>>s){ if(s=="#") break; dict.push_back(s); } while(cin>>s){ if(s=="#") break; cout<<s; int len1=s.size(); bool sign=false; for(int i=0;i<dict.size();i++){ if(s==dict[i]){ cout<<" is correct"<<endl; sign=true;break; } } if(!sign){ cout<<":"; //枚举字典中每一个单词进行查找 for(int i=0;i<dict.size();i++){ int len2=dict[i].size(); int d=0,delta=len2-len1; if(delta>1||delta<-1) continue; if(delta==-1){//删除 for(int j=0;j<len1;j++){ if(s[j]==dict[i][d]) d++; } if(d==len2) cout<<' '<<dict[i]; } else if(delta==0){//替换 for(int j=0;j<len1;j++){ if(s[j]!=dict[i][j]) d++; } if(d==1) cout<<' '<<dict[i]; } else if(delta==1){//插入 for(int j=0;j<len2;j++){ if(s[d]==dict[i][j]) d++; } if(d==len1) cout<<' '<<dict[i]; } } cout<<endl; } } }