poj 字符串相关的水题

来源:互联网 发布:网络推广微信营销方案 编辑:程序博客网 时间:2024/05/17 08:59

1035 Spell checker
Accepted 456K 375MS

#include<iostream>#include<string>#include<cstdio>#include<cstring>//#include<math.h>#include<algorithm>#include<vector>#include<map>#define MAXNUM 10010using namespace std;int ans, h, w, W[45][15], link[405];string dic[MAXNUM];vector<int>result;bool add(string s1,string s2){    int i, j;    bool flag;    flag = 0;    i = j = 0;    while (i < s1.length())    {        if (!flag)        {            if (s1[i] != s2[j])            {                j++;                flag = 1;            }            else            {                i++; j++;            }        }        else        {            if (s1[i] != s2[j])            {                return false;            }            else            {                i++; j++;            }        }    }    return true;}bool del(string s1, string s2){    int i, j;    bool flag;    flag = 0;    i = j = 0;    while (i < s1.length())    {        if (!flag)        {            if (s1[i] != s2[j])            {                i++; flag = 1;            }            else            {                i++; j++;            }        }        else        {            if (s1[i] != s2[j])                return false;            else            {                i++; j++;            }        }    }    return true;}int cmp(string s1, string s2){    int i, count;    count = 0;    for (i = 0; i < s1.length();i++)    if (s1[i] != s2[i])        count++;    return count;}int main(void){    //freopen("1.txt", "r", stdin);    int i, j, t,tmp;    bool flag;    string str;    t = 0;    while (cin >> dic[t] && dic[t] != "#") t++;    while (cin >> str&&str != "#")    {        result.clear();        flag = 0;        for (i = 0; i < t; i++)        {            tmp = str.length() - dic[i].length();            if (tmp>1 || tmp < -1)                continue;            else if (str.length() == dic[i].length() + 1)            {                if (del(str, dic[i]))                    result.push_back(i);            }            else if (str.length() == dic[i].length() - 1)            {                if (add(str, dic[i]))                    result.push_back(i);            }            else if (str.length() == dic[i].length())            {                tmp = cmp(str, dic[i]);                if (!tmp)                {                    flag = 1;                    break;                }                else if (tmp == 1)                    result.push_back(i);            }        }        if (flag)            cout << str << " is correct" << endl;        else        {            cout << str << ":" ;            for (i = 0; i < result.size(); i++)                cout << " " << dic[result[i]];            cout << endl;        }    }}
原创粉丝点击