java – 在单词列表中查找拼写错误

给定长度为l的正确单词列表和长度为l的错误单词列表,通过交换两个连续字母,找到不同于错误单词列表的单词与纠正单词列表不同.这些话被认为是拼写错误.例如,hte被认为是一个错字,而het不被视为拼写错误.

什么是最佳时间效率算法,允许我们通过这个定义找到被认为是拼写错误的单词列表?

我被告知列表可以在线性时间内计算,但我没有找到线性时间的解决方案.我能想到的唯一方法是比较来自一个列表的所有字母与另一个列表的强力.

最佳答案
L - list of correct words of size n.
L'- list of incorrect words of size m.
H - hash table
R - result set

1. for each word w in L :
   1.1  for each typo t of w : //there are l-1 typos
     1.1.1 insert t into H
2. for each word w' in L' :
   2.1 if w' in H insert w' in R
3. return R

时间复杂度:
    O(n * l)O(m)= O(max(n * l,m))

空间复杂度:
    为O(n * 1)

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...