#17980. 拼写检查 (word)

拼写检查 (word)

题目描述

此题请务必开O2

微软的Word有一个拼写检查功能,如果你拼写错了单词,它会用红线标出以示提醒,然后给出可能正确的单词。现在要你编程实现类似的一个系统:给定一个词表以及一个待检查的单词,判断这个单词是否在词表中,如果不在词表中,程序应该给出一个相似的单词。在寻找相似的单词时,你只需要考虑如下几个简单的情况:

  1. 漏写了一个字母,如把 "abacus" 误拼写为 "abacs"。
  2. 多写了一个字母,如把 "abacus" 误拼写为 "abaacus"。
  3. 将某处的一个字母写成了另一个字母,如 "abacus" 误拼写为 "abacup"。

编程实现这个系统。

输入格式

输入数据的第一行是一个由小写字母组成的字符串,表示要进行拼写检查的单词。

第二行是一个数 N1N1000)N(1\leq N\leq 1000),表示词表中词的数目。

接下来有 NN 行,每行都是一个由小写字母组成的字符串,代表词表中的每一个单词。

输出格式

仅输出一个字符串:

  1. 如果要检查的单词在词表中出现,则原样输出该单词。
  2. 如果要检查的单词在词表中未出现,但在词表中找到相似的单词,则输出在词表中和它相似的那个单词。如果在此表中找到多个相似单词,仅输出在输入文件中最靠前的一个。
  3. 如果要检查的单词在词表中未出现,并且在词表中找不到与它相似的单词,输出 NOANSWER
abstaine
4
abacus
abstract
abstain
abstainer
abstain

数据范围与约定

对于 40%40\% 的数据,1S1000,N1001 \leq |S| \leq 1000, N \leq 100

对于 100%100\% 的数据,1S1000,N10001 \leq |S| \leq 1000, N \leq 1000 ,其中 S|S| 为字符串长度

数据保证有解。