纯暴力
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <string>
#include <vector>
#include <set>
#include <cstdlib>
using namespace std;
string str;
vector<string> que;
vector<string> ans;
bool ope(string a)
{
int len = a.length();
for( int i = 0; i<que.size(); i++)
{
string temp = que[i];
string str1 = a;
int slen = temp.length();
if(slen + 1 == len)//删除一个字母
{
int k = 0;
for( int j = 0; j < len; j++)
{
if(a[j] != temp[k])
{
str1.erase(str1.begin()+j);
if( str1!= temp)
break;
ans.push_back(temp);
break;
}
k++;
}
}
else if(slen == len)//替换一个字母
{
int k = 0;
for(int j = 0; j< len; j++)
{
if(a[j] != temp[k])
{
str1.replace(j,1,1,temp[k]);
if( str1!= temp)
break;
ans.push_back(temp);
break;
}
k++;
}
}
else if(slen - 1 == len)//增添
{
int k = 0,j = 0;
for( j = 0; j < len; j++)
{
if(a[j] != temp[k])
{
str1.insert(str1.begin() + j,temp[k]);
if(str1 != temp)
break;
else
{
ans.push_back(temp);
break;
}
}
k++;
}
if( j == len && a[j-1] == temp[k-1])//如果当前字符串只是需要在最后添加
{
ans.push_back(temp);
continue;
}
}
}
return 0;
}
int main()
{
int num1 = 0;
while(1)
{
cin>>str;
if(str == "#")
break;
que.push_back(str);
}
while(1)
{
ans.clear();
bool flag = false;
cin>>str;
if(str == "#")
break;
for( int i = 0; i<que.size(); i++)
{
if(que[i] == str)
{
cout<<str<<" is correct"<<endl;
flag = true;
break;
}
}
if(flag ) continue;
ope(str);
cout<<str<<":";
if(ans.size() > 0)
{
for( int i = 0; i<ans.size(); i++)
cout<<" "<<ans[i];
}
cout<<endl;
}
return 0;
}