2012-10-28 37 views
1

我正在写一个拼写检查器。我知道所有关于Levenshtein距离,尝试等...拼写检查重复字母

但我的问题是,用重复的字母,如:haaaaapppppyyy改正一个单词到快乐。解决这个问题的最好方法是什么?

到目前为止,我正在考虑使用修改的trie,当我到达“a”并且看到trie中没有另一个后面的“a”时,我跳过字符串中的所有a,直到到达p并继续从那里。

我不完全确定这是实现它的最佳方式,或者它可以在所有字符串上工作。

有什么建议吗?

+0

它绝对不会适用于所有字符串,但我猜测它可以用于其中的99.99%:p – keyser

+0

拼写检查的目的是什么?是为了人类还是作为机器的饲料? (如果后者使用词干可以解决问题,因为词干分析者将会删除大部分重复的字母,并且可以将所有词语转化为他们的词干形式) – amit

+0

人类。所以你可以输入:hhhhaaaappppyyy,它应该表明'快乐'作为替代品。 – darksky

回答

0

您可以创建一个删除了所有重复字母的新树(例如,happy - > hapy)。检查单词时,请执行相同的操作(haaaaapppppyyy - > hapy)并在特里搜索它。

+0

请注意,它将无法区分“流血”和“流血”(这可能是好事还是坏事,取决于应用程序) – amit