Poj 1035 --Spell checker
2010-12-04 04:23
363 查看
这题学到了很多很多知识,首先是string::insert,string::erase 这两个方法,http://www.cplusplus.com/reference/string/string/erase/ 这个网站非常好,可以查到STL库函数,而且都是有例子来说明,简明扼要,精彩的是把所有重载的方法在一个程序里面全部举出例子。第二个是在运行程序的时候发现Dev-C++的MinGW编译器和vs2010的编译器在实现方面有差别,主要是向量越界检查这一点,MinGW是不检查,而vs2010需要检查,并且不能执行程序,
#include<iostream> #include<fstream> #include<vector> #include<string> using namespace std; void replace(string s1,string s2); void ins(string s1,string s2); void del(string s1,string s2); int main() { ifstream cin("d://1.txt"); vector<string> v1; string s; int i,j,flag; while(1){ cin>>s; if(s=="#")break; v1.push_back(s); } while(1){ flag=0; cin>>s; if(s=="#") break; for(i=0;i!=v1.size();i++) if(v1[i]==s){ cout<<s<<" is correct"<<endl; flag=1; break; } if(flag==1)continue; else{ cout<<s<<":"; for(i=0;i!=v1.size();i++){ if(s.length()==v1[i].length()) replace(s,v1[i]); if(s.length()==v1[i].length()+1) ins(s,v1[i]); if(s.length()==v1[i].length()-1) del(s,v1[i]); } cout<<endl; } } system("pause"); return 0; } void replace(string s1,string s2) { string res=s2; int i,count=0;; for(i=0;i!=s1.length();i++) if(s1[i]!=s2[i]) count++; if(count==1) cout<<" "<<res; } void ins(string s1,string s2) { int i; string res=s2; for(i=0;i!=s1.size();i++){ if(s2[i]!=s1[i]){ s2.insert(i,1,s1[i]); break; } } if(s2==s1) cout<<" "<<res; } void del(string s1,string s2) { int i; string res=s2; for(i=0;i!=s2.size();i++){ if(s2[i]!=s1[i]){ s2.erase(i,1); break; } } if(s2==s1)cout<<" "<<res; }
相关文章推荐
- poj1035 Spell checker
- poj 1035 -- Spell checker
- poj1035_Spell checker
- POJ 1035 Spell checker
- POJ 1035 Spell checker
- POJ 1035 Spell checker
- POJ1035——Spell checker
- poj1035 Spell checker
- POJ1035——spell checker
- POJ 1035 Spell checker
- poj 1035 Spell checker
- POJ 1035 Spell checker
- poj 1035 Spell checker
- poj-1035-Spell checker
- poj1035 Spell checker
- poj1035——Spell checker
- poj 1035 Spell checker
- poj1035 Spell checker
- POJ 1035 Spell checker
- poj1035 Spell checker