POJ 1035
2018-03-18 17:30
211 查看
#include <iostream> #include <stdio.h> #include <algorithm> #include <vector> #include <string> #include <cstring> #include <map> #include <set> using namespace std; vector<string> myvector; vector<string> vector1; bool del(string s1, string s2) { // delete one char from s2 to turn to s1 if (s1.size() + 1 != s2.size()) return false; int ix = 0; bool isdel = false; for (int i = 0; i < s1.size(); ++i) { if (s2[ix] == s1[i]) ix++; else { if (isdel) return false; else { isdel = true; i--; ix++; } } } return true; } bool ins(string s1, string s2) { // insert a char to s2 so that s1==s2; if (s1.size() != s2.size() + 1) return false; int ix = 0; int isins = false; for (int i = 0; i < s1.size(); ++i) { if (s2[ix] == s1[i]) ix++; else { if (isins) return false; else isins = true; } } return true; } bool sub(string s1, string s2) { if (s1.size() != s2.size()) return false; int ix = 0; bool issub = false; for (int i = 0; i < s2.size(); ++i) { if (s1[i] != s2[ix++]) { if (issub) return false; else issub = true; } } return true; } vector<string> findsub(string s) { vector1.clear(); // from myvector find the substitution of s; for (int i = 0; i < myvector.size(); ++i) { int gap = static_cast<int>(myvector[i].size() - s.size()); if (gap == 1){ if (ins(myvector[i], s)) vector1.push_back(myvector[i]); } else if (gap == 0){ if (sub(myvector[i], s)) vector1.push_back(myvector[i]); } else if (gap == -1){ if (del(myvector[i], s)) vector1.push_back(myvector[i]); } } return vector1; } int main() { // freopen("../in.txt", "r", stdin); string temp; vector<string>::iterator it; vector<string> resvector; while (cin >> temp && temp.compare("#")) { myvector.push_back(temp); } while (cin >> temp && temp.compare("#")) { if (find(myvector.begin(), myvector.end(), temp) != myvector.end()) { cout << temp << " " << "is correct" << endl; } else { cout << temp << ":"; resvector = findsub(temp); it = resvector.begin(); for(; it != resvector.end(); it++){ cout<<" "<<*it; } cout<<endl; } } }
相关文章推荐
- Poj 1035 Spell checker
- poj 1035 Spell checker ( 字符串处理 )
- poj 1035 Spell checker ( 字符串处理 )
- POJ 1035 Spell checker(水~)
- [POJ1035]-Spell checker
- poj_1035 Spell checker(字符串处理)
- POJ 1035 Spell checker
- 我的poj第一道数据结构--poj1035
- poj 1035--Spell checker
- poj 1035 Spell checker
- POJ 一 1035 Spell checker
- POJ-1035 Spell checker 暴力
- POJ 1035 Spell checker
- poj 1035 Spell checker
- poj解题报告——1035
- POJ 1035
- poj1035——Spell checker
- poj 1035
- poj1035
- 【POJ 1035】Spell checker