前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【POJ 1035】Spell checker

【POJ 1035】Spell checker

作者头像
饶文津
发布2020-06-02 11:40:18
3470
发布2020-06-02 11:40:18
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

题意

  每个单词,如果字典里存在,输出”该单词 is correct“;如果字典里不存在,但是可以通过删除、添加、替换一个字母得到字典里存在的单词,那就输出 “该单词:修正的单词”,并按字典里的顺序输出;如果都不存在,那就输出“单词:”就好。。。

分析

  存下字典单词们和它们的长度,对每个要查找的单词,暴力扫描字典单词,根据单词长度,选择操作并检查。

代码

代码语言:javascript
复制
#include<stdio.h>
#include<cstring>
char c[17],dictionary[10005][17],words[52][17],print[10005];
int n,num,len,correct,l[10005],printlen;
void add(int i)
{
    print[printlen++]=' ';
    for(int p=0; p<l[i]; p++)
        print[printlen+p]=dictionary[i][p];
    printlen+=l[i];
}
int main()
{
    while(scanf("%s",c)&&c[0]!='#')
    {
        for(len=0; c[len]; len++)
            dictionary[num][len]=c[len];
        l[num]=len;
        num++;
    }

    while(scanf("%s",words[n])&&words[n][0]!='#')
    {
        printf("%s",words[n]);
        for(len=0; words[n][len]; len++);
        correct=printlen=0;
        memset(print,0,sizeof(print));
        for(int i=0; i<num&&!correct; i++)
        {
            if(l[i]>=len-1)
            {
                int j=0;
                while(j<len&&dictionary[i][j] ==words[n][j]) j++;
                if(j==len&&l[i]==len)
                    correct=1;
                else
                {
                    if(l[i]==len)
                    {
                        while(j<len&&dictionary[i][j+1] ==words[n][j+1])j++;//替换
                        if(j==len)
                            add(i);
                    }
                    if(l[i]==len-1)
                    {
                        while(j<len-1&&dictionary[i][j] ==words[n][j+1])j++;//删除
                        if(j==len-1)
                            add(i);
                    }
                    if(l[i]==len+1)
                    {
                        while(j<len&&dictionary[i][j+1] ==words[n][j])j++;//添加
                        if(j==len)
                            add(i);
                    }
                }
            }
        }
        if(correct) printf(" is correct\n");
        else printf(":%s\n",print);
        n++;
    }
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-02-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 分析
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档