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 ...
随机推荐
- BZOJ 1090: [SCOI2003]字符串折叠
Sol 区间DP. 转移很简单,枚举会形成的断长转移就行,话说上一题我就跟这个是差不多的思路,转移改了改,然后死活过不了... 同样都是SCOI的题...相差4年... Code /********* ...
- Js 的 this 是什么
this指的是调用函数的那个对象,谁调用函数,谁就是this 更多: http://www.cnblogs.com/justany/archive/2012/11/01/the_keyword_thi ...
- Bootstrap datepicker可配置网址
http://eternicode.github.io/bootstrap-datepicker/?markup=input&format=&weekStart=&startD ...
- ios中的addChildViewController 和 android中的fragment
刚才突然感觉这2个东西的功能特别像,记录一下,待研究!
- ArrayList排序
今天发现,ArrayList 排序不满足期望. 起先,List是这样Before sort: [1, @I, am, Love, java, very, Much] 使用Collections.sor ...
- 使用Servlet和jdbc创建用户登录验证
首先创建一个用户表,用来保存用户名 密码,并插入几条数据 mysql> desc user;+----------+-------------+------+-----+---------+-- ...
- ACM/ICPC 之 DP-整数划分问题初探 (POJ1221)
写下这道题的原因很简单= =,因为这一题的状态转移方程不好找,另一方面,我看到很多针对这一题写的解题报告都把累加状态说得模棱两可,甚至直接说成了一个单一状态,弄得本是菜鸟的我硬生生折磨了一上午画了几个 ...
- cmd命令查看局域网内计算机信息
ping [计算机名] ping -a [IP] nbtstat -a [IP] net view arp -a nslookup www.baidu.com 查看当前dns地址 tracert [I ...
- Linux内存管理原理
本文以32位机器为准,串讲一些内存管理的知识点. 1. 虚拟地址.物理地址.逻辑地址.线性地址 虚拟地址又叫线性地址.linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻 ...
- JqueryUI学习笔记-自动完成autocomplete
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...