首页 > 其他 > 详细

PKU 1035 Spell checker(Vector+String应用)

时间:2017-02-19 18:44:52      阅读:257      评论:0      收藏:0      [点我收藏+]

题目大意:原题链接

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;
          }
    }
}

 

PKU 1035 Spell checker(Vector+String应用)

原文:http://www.cnblogs.com/freinds/p/6416340.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!