在NodeJS中创建一个函数,当字符串包含一个超过3个字母的英语单词时,该函数返回true的最佳方法是什么?
代码将被放置在lambda中,所以我正在寻找最有效的解决方案。到目前为止,我得到的最好的解决方案是使用dictionary-en
并迭代源字符串上调用.includes(word)
的每个单词,我想知道您是否可以想到更好的方法来实现这一点。
一些应该返回true的字符串示例:
- y89nsdadhomea98qwoi
- :_5678aSD.瓶广告。
- yfugdnuagybdas眼镜midwqihniwqnhi
一些应该返回false的字符串示例:
- y89nsdadhasa98qwoi
- :_5678aSD.b0TTle4ds。
- 伊富格德努阿吉布达斯米德沃基赫尼乌格尼
2条答案
按热度按时间jutyujz01#
浏览字典(可能包含数十万个单词)并不是一个好主意。当字符串的长度在10-200个字符之间时,迭代源字符串中的每个字符可以得到更好的时间复杂度结果。如果你不关心空间复杂度,有一个更好的方法:
1.构建一个提前的特殊字典散列表,这需要花费
O(m)
(m
是你的字典单词的数量)。hashmap将类似于:1.迭代源字符串中的每个字符并查找单词,这样,迭代时间为O(n),查找时间为O(1):
1.现在你知道源字符串很有可能包含一个大于3的英语单词,你可以应用动态编程,构建一个树,或者改变dictionaryMap,如果你想找到一个确切的单词,执行步骤2递归:
或
=>总计:
O(m) + O(n) + O(1) = O(m)
时间复杂度和O(m)
或O(m*longestWordCharacters)
空间复杂度quhf5bfb2#
嗯?这不是node.js的工作,而是JavaScript!
什么是node.js
https://en.wikipedia.org/wiki/Node.js
现在的问题是...
英语单词超过3个字母但有成千上万的人!
你有没有一个包含所有这些单词的文本文件,以便我们可以将它们加载到数组中进行操作?
不?好吧,同时这是我们最好的...
对不起,我阅读了你的文章后喝了几杯苏格兰威士忌和LMAO。:)