poj1035——Spell checker
2017-12-01 12:11
253 查看
题目大意:给出一本字典,判断输入的单词是否在字典中,或者在删除、替换、添加一个字母后是否在字典中
输入:字典中的单词(每个占一行,最多10000个)(单词长度不超过15,都是小写字母)
#
要检查的单词(每个占一行,最多50个)(单词长度不超过15,都是小写字母)
#
输出:如果本来就在字典中,输出 ... is correct(...表示这个单词)
如果修改后在字典中,输出 ...:空格***(***表示修改后的单词,按他们在字典中出现顺序输出所有方案)
如果修改后还是不在,输出 ...:
分析:只有当待查单词与字典单词长度差值<=1时才进行比较操作
如果长度一致,则检查不同字符个数(为1就correct)
否则就用短的去匹配长的
代码:转载自https://www.cnblogs.com/13224ACMer/p/4697157.html
#include<stdio.h>
#include<string.h>
#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
string s;
int main(){
vector<string>q;
while(cin>>s){
if(s=="#")
break;
q.push_back(s);
}
while(cin>>s){
if(s=="#")
break;
int len=s.size();
bool flag=false;
cout<<s;
for(int i=0;i<q.size();i++){
if(s==q[i]){
flag=true;
cout<<" is correct"<<endl;
break;
}
}
if(!flag){
cout<<":";
for(int i=0;i<q.size();i++){
int len1=q[i].size();
int temp=len1-len;
if(temp>1||temp<-1)
continue;
int d=0;
if(temp==0){
for(int j=0;j<len;j++){
if(s[j]!=q[i][j])
d++;
}
if(d==1)
cout<<' '<<q[i];
}
else if(temp==-1){//用字典单词去匹配待查单词,看看字典单词的所有字母是否都存在于待查单词中
for(int j=0;j<len;j++){
if(s[j]==q[i][d]){
d++;
}
}
if(d==len1)
cout<<' '<<q[i];
}
else if(temp==1){//用待查单词去匹配字典单词,看看待查单词的所有字母是否都存在于字典单词中
for(int j=0;j<len1;j++){
if(s[d]==q[i][j]){
d++;
}
}
if(d==len)
cout<<' '<<q[i];
}
}
cout<<endl;
}
}
return 0;
}
输入:字典中的单词(每个占一行,最多10000个)(单词长度不超过15,都是小写字母)
#
要检查的单词(每个占一行,最多50个)(单词长度不超过15,都是小写字母)
#
输出:如果本来就在字典中,输出 ... is correct(...表示这个单词)
如果修改后在字典中,输出 ...:空格***(***表示修改后的单词,按他们在字典中出现顺序输出所有方案)
如果修改后还是不在,输出 ...:
分析:只有当待查单词与字典单词长度差值<=1时才进行比较操作
如果长度一致,则检查不同字符个数(为1就correct)
否则就用短的去匹配长的
代码:转载自https://www.cnblogs.com/13224ACMer/p/4697157.html
#include<stdio.h>
#include<string.h>
#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
string s;
int main(){
vector<string>q;
while(cin>>s){
if(s=="#")
break;
q.push_back(s);
}
while(cin>>s){
if(s=="#")
break;
int len=s.size();
bool flag=false;
cout<<s;
for(int i=0;i<q.size();i++){
if(s==q[i]){
flag=true;
cout<<" is correct"<<endl;
break;
}
}
if(!flag){
cout<<":";
for(int i=0;i<q.size();i++){
int len1=q[i].size();
int temp=len1-len;
if(temp>1||temp<-1)
continue;
int d=0;
if(temp==0){
for(int j=0;j<len;j++){
if(s[j]!=q[i][j])
d++;
}
if(d==1)
cout<<' '<<q[i];
}
else if(temp==-1){//用字典单词去匹配待查单词,看看字典单词的所有字母是否都存在于待查单词中
for(int j=0;j<len;j++){
if(s[j]==q[i][d]){
d++;
}
}
if(d==len1)
cout<<' '<<q[i];
}
else if(temp==1){//用待查单词去匹配字典单词,看看待查单词的所有字母是否都存在于字典单词中
for(int j=0;j<len1;j++){
if(s[d]==q[i][j]){
d++;
}
}
if(d==len)
cout<<' '<<q[i];
}
}
cout<<endl;
}
}
return 0;
}
相关文章推荐
- 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
- poj 1035 Spell checker
- poj 1035 Spell checker
- POJ 1035 Spell checker
- poj1035_Spell checker
- POJ 1035 Spell checker
- poj 1035 Spell Checker
- POJ1035 Spell checker
- POJ 1035 Spell checker
- poj 1035 Spell checker
- poj1035 Spell checker
- POJ-1035-Spell checker
- POJ 1035 Spell checker