POJ 1035 Spell checker(水~)
2015-06-20 11:44
477 查看
Description
输入一部字典,输入若干单词
1、 若某个单词能在字典中找到,则输出corret
2、 若某个单词能通过变换或删除或添加一个字符后,在字典中找得到,则输出这些单词,输出顺序根据 输入的那部字典的字典序
3、 若某个单词无论操作与否都无法在字典中找得到,则输出空
Input
一部字典,以#结束字典输入,多次单词查询,以#结束输入
Output
对每一个查询的单词,按题意输出
Sample Input
i
is
has
have
be
my
more
contest
me
too
if
award
#
me
aware
m
contest
hav
oo
or
i
fi
mre
#
Sample Output
me is correct
aware: award
m: i my me
contest is correct
hav: has have
oo: too
or:
i is correct
fi: i
mre: more me
Solution
字符串处理
对于每个查询的单词,对字典中单词逐个比较,只有当两者长度差<=1的时候才检查操作
Code
输入一部字典,输入若干单词
1、 若某个单词能在字典中找到,则输出corret
2、 若某个单词能通过变换或删除或添加一个字符后,在字典中找得到,则输出这些单词,输出顺序根据 输入的那部字典的字典序
3、 若某个单词无论操作与否都无法在字典中找得到,则输出空
Input
一部字典,以#结束字典输入,多次单词查询,以#结束输入
Output
对每一个查询的单词,按题意输出
Sample Input
i
is
has
have
be
my
more
contest
me
too
if
award
#
me
aware
m
contest
hav
oo
or
i
fi
mre
#
Sample Output
me is correct
aware: award
m: i my me
contest is correct
hav: has have
oo: too
or:
i is correct
fi: i
mre: more me
Solution
字符串处理
对于每个查询的单词,对字典中单词逐个比较,只有当两者长度差<=1的时候才检查操作
Code
#include<cstdio> #include<cstring> #include<string> #include<iostream> #include<algorithm> #include<vector> using namespace std; vector<string>s; int main() { string c; while(1)//输入字典 { cin>>c; if(c=="#") break; else s.push_back(c); } while(1)//多次查询 { cin>>c; if(c=="#") break; cout<<c;//按格式输出 int flag=0; for(int i=0;i<s.size();i++)//找到相同单词 if(c==s[i]) flag=1; if(flag) { cout<<" is correct"<<endl; continue; } cout<<": ";//按格式输出 for(int i=0;i<s.size();i++)//检查字典中每个单词 { int t=s[i].length()-c.length(); if(t<-1||t>1)//长度差>1,不符合条件 continue; if(t==0)//若长度相同则判断是否只相差一个字符 { int res=0;//不同的字符个数 for(int j=0;j<s[i].length();j++) if(s[i][j]!=c[j]) res++; if(res==1)//若只相差一个字符则满足条件 cout<<s[i]<<" ";//按格式输出 } else if(t==-1||t==1)//若长度相差一则判断是否只增添或删减了一个字符 { if(t==1)//删减一个字符 { int res=0;//相同的字符数 for(int j=0;j<s[i].size();j++) if(s[i][j]==c[res]) res++; if(res==c.size())//满足条件 cout<<s[i]<<" ";//按格式输出 } if(t==-1)//增添一个字符 { int res=0;//相同的字符数 for(int j=0;j<c.size();j++) if(s[i][res]==c[j]) res++; if(res==s[i].size())//满足条件 cout<<s[i]<<" ";//按格式输出 } } } cout<<endl;//按格式输出 } return 0; }
相关文章推荐
- C#语言实现对网页图片的随机抓取。基础办法,但还有一点小问题,欢迎大家指正
- iPhone发展【一】从HelloWorld开始
- php类的扩展和继承用法实例
- github命令行上传项目的莫名的坑
- LNMP第一部分环境搭建
- 你才20多岁,为什么总怕来不及---转载
- xml中常用的转义符
- BootStrap 智能表单系列 九 表单图片上传的支持
- To_review_100_1---循环链接表的整理
- Java基础07——其他对象
- hiho 1163 博弈游戏·Nim游戏
- 委托——探索之旅
- HDU-1051-Wooden Sticks(C++ && 不水的贪心!)
- Qt 与 Qt Creator 简介
- BASE64 编码和解码
- bzoj4027【heoi2015】兔子与樱花
- 我以为我看到了全部
- 运放高边电流检测
- centos下shell环境查看实时流量
- 博客已迁移