Spell checker
Description
If the word is absent in the dictionary then it can be replaced by correct words (from the dictionary) that can be obtained by one of the following operations:
?deleting of one letter from the word;
?replacing of one letter in the word with an arbitrary letter;
?inserting of one arbitrary letter into the word.
Your task is to write the program that will find all possible replacements from the dictionary for every given word.
Input
The next part of the file contains all words that are to be checked. Each word occupies its own line. This part is also finished by the single character '#' on a separate line. There will be at most 50 words that are to be checked.
All words in the input file (words from the dictionary and words to be checked) consist only of small alphabetic characters and each one contains 15 characters at most.
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 题目大意:输入字典中的单词,以#结束,再输入要查找的单词,也以#结束
若在字典中找到了,则输出:x is correct;
若在字典中找到单词满足或者更改一个字母,或者删除一个字母,或者增加一个字母之后成为要查找的单词,就按照字典序输出;
若是以上两种都没有找到,则不输出;
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
char dic[][],word[][];
int dicnum=,wordnum=;
void add()
{
while(scanf("%s",dic[dicnum])&&dic[dicnum][]!='#')
dicnum++;
while(scanf("%s",word[wordnum])&&word[wordnum][]!='#')
wordnum++;
dicnum--;
wordnum--;
//cout<<wordnum<<endl<<dicnum;
}
int change(char f[],char g[])//f是字典中的单词,g是查找的单词
{
int i=;
int t=;
for(i=;f[i]!='\0';i++)
{
if(f[i]!=g[i])
{
t++;
if(t==)return ;
}
}
return ;
}
int zeng(char f[],char g[])//g大
{
int s=,t=,zong=;
while(g[t]!='\0')
{
if(f[s]!=g[t])
{
zong++;
t++;
if(zong==)return ;
}
else
{
s++;
t++;
}
}
return ;
}
int shan(char f[],char g[])//f大
{
int s=,t=,zong=;
while(f[s]!='\0')
{
if(f[s]!=g[t])
{
zong++;
s++;
if(zong==)return ;
}
else
{
s++;
t++;
}
}
return ;
}
int main()
{
add();
int diclen[]={};
int i,j;
for(i=;i<=dicnum;i++)
diclen[i]=strlen(dic[i]);
for(i=;i<=wordnum;i++)
{
int f[],t=,flag=,s=,zong=;
int len=strlen(word[i]);
for( j=;j<=dicnum;j++)
{
if(strcmp(dic[j],word[i])==)
{
flag=;
break;
}
else if(diclen[j]==len)
{
s=change(dic[j],word[i]);
if(s==)
{
f[t++]=j;
zong++;
}
}
else if(diclen[j]-len==-)
{
s=zeng(dic[j],word[i]);
if(s==)f[t++]=j;
}
else if(diclen[j]-len==)
{
s=shan(dic[j],word[i]);
if(s==)
{
f[t++]=j;
zong++;
}
}
}
if(flag==)
{
cout<<word[i]<<' '<<"is"<<' '<<"correct"<<endl;
continue;
}
else
{
//if(zong==0)continue;
cout<<word[i]<<": ";
int st=;
for(j=;j<=t-;j++)
{
if(st==)
{
cout<<dic[f[j]];
st=;
}
else
cout<<" "<<dic[f[j]];
}
cout<<endl;
}
}
return ;
}
Spell checker的更多相关文章
- poj 1035 Spell checker
Spell checker Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u J ...
- Spell checker(暴力)
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 20188 Accepted: 7404 De ...
- POJ1035——Spell checker(字符串处理)
Spell checker DescriptionYou, as a member of a development team for a new spell checking program, ar ...
- poj 1035 Spell checker ( 字符串处理 )
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16675 Accepted: 6087 De ...
- [ACM] POJ 1035 Spell checker (单词查找,删除替换添加不论什么一个字母)
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18693 Accepted: 6844 De ...
- Spell checker POJ 1035 字符串
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25426 Accepted: 9300 De ...
- POJ 1035:Spell checker
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22574 Accepted: 8231 De ...
- Code Spell Checker & VSCode 单词拼写验证
Code Spell Checker & VSCode 单词拼写验证 https://marketplace.visualstudio.com/items?itemName=streetsid ...
- VSCode中插件Code Spell Checker
说在前面 介绍 Code Spell Checker 是在VSCode中的一款插件,能够帮助我们检查单词拼写是否出现错误,检查的规则遵循 camelCase (驼峰拼写法). 安装方法 打开VSCod ...
随机推荐
- Android 内容提供器(Content Provider)介绍
内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性.目前,使用内容 ...
- 如何给zencart安装image handler插件?
以下内容均为个人的工作总结,有错误的理解都很正常,所以提醒您,可以参考,但是由此造成的一切后果,本人概不负责. 1 去zencart官网下载一个插件包(注意版本是否匹配相应的zencart版本,我的是 ...
- VQuery选择器
VQUery elements属性,储存选中的元素 参数 typeof的作用 字符串 class ID tagName 函数 事件绑定 对象 直接插入 $函数 绑定事件 click方法 显示隐藏,- ...
- HTML中属性ID和属性NAME有何区别?
今天出美工面试题的时候,David让我加上一道题:HTML中id和name的区别.一听对呀,HTML中id和name有什么区别,只是平时在用,倒没怎么想过,只是那么用了罢了,呵呵,其实在做网页的时候有 ...
- iframe操作
http://www.jb51.net/article/15780.htmiframe自适应高度:经典<iframe src="http://www.lanyunwork.com/&q ...
- poj 1182
http://poj.org/problem?id=1182 一个利用并查集的经典题目. 思路:在网上看到别人的思路,觉得方法还是挺不错的. 首先,开辟一个3*n的数组belg,用来存b和c的关系,在 ...
- Linux下Apache配置SSL支持https
参考:http://www.thinksaas.cn/group/topic/280017/ 生成证书过程如下 Step :生成服务器密钥: mkdir -p /etc/pki/test cd /et ...
- [转]Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
版权声明:本文出自郭霖的博客,转载必须注明出处. 转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9255575 最近项目中需要用到L ...
- 士兵杀敌(三)_RMQ(区间最值查询)
士兵杀敌(三) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进 ...
- Binary String Matching
问题 B: Binary String Matching 时间限制: 3 Sec 内存限制: 128 MB提交: 4 解决: 2[提交][状态][讨论版] 题目描述 Given two strin ...