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 ...
随机推荐
- HDU 1159 裸最长公共子串
试着拍了一道模板题 dp开了500,开100会超时..... string类型中间有空格会判为结束 #include<algorithm> -->min,max函数的头文件 #inc ...
- java去除字符串中的空格、回车、换行符、制表符
import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author chzeze * 2016-11-07 */ ...
- 微博转发关系采集,可拓展关键字采集,评论采集(Java版)
微博模拟登录获取cookis,配置采集深度,采集一条微博转发关系页面,同时解析页面,生成一条微博的传播图,数据集可做微博影响力分析和传播分析 gitthub:https://github.com/ch ...
- ndk学习5: ndk中使用c++
默认情况下ndk不支持标准C++库,异常, rtti等 在ndk文档有关于C++ support的详细介绍 一. 使用C++标准库 介绍: 默认是使用最小额度的C++运行时库, 在Applic ...
- 《Head First Servlet JSP》学习笔记一
- POJ 1458 1159
http://poj.org/problem?id=1458 一道容易的DP,求最长公共子序列的 dp[i][j],代表str1中的第i个字母和str2中的第j个字母的最多的公共字母数 #includ ...
- ACM/ICPC 之 四道MST-Prim解法(POJ1258-POJ1751-POJ2349-POJ3026)
四道MST,适合Prim解法,也可以作为MST练习题. 题意包括在代码中. POJ1258-Agri Net 水题 //Prim-没什么好说的 //接受一个邻接矩阵,求MST //Time:0Ms M ...
- 2101 Problem A Snake Filled
题目描述 “What a boring world!”Julyed felt so bored that she began to write numbers on the coordinate pa ...
- AIX系统中安装Java6全过程(全部)
==================================================== From: GCG TSC pSeries <ibm800p@cn.ibm.com& ...
- JS判断客户端是手机还是PC的2个代码(转)
转载自:http://www.jb51.net/article/48939.htm Javascript 判断客户端是否为 PC 还是手持设备,有时候项目中需要用到,很方便的检测,源生的哦,方法一共有 ...