检查字符串是否包含所有子字符串的最快方法
Fastest way to check if string contains all substrings
Given是一个包含子字符串和字符串的数组,如果它包含所有子字符串,我将对其进行检查。
我必须迭代元素并使用indexOf>=0进行检查吗?或者你有什么更酷的想法吗?因为我必须一次又一次地完成这项任务,所以任何性能优势都会有所帮助,这要归功于预先编程语言是javascript
您可以使用Array.prototype.eevery(callback[,thisArg]);点击此处阅读更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every
基本上,对于您的示例,它将是:
arr.every(function(element){
return yourstring.indexOf(element) != -1;
});
当然,返回值要么为true,要么为false。
您正在寻找一个很酷的想法,并且真的有很多这样的子字符串要测试吗?
然后,从性能角度来看,为字符串构建后缀树是一个好主意,它的查找复杂度仅取决于子字符串的大小。
您将把朴素解(如@BaneBojanić的解)的复杂性从O(len(string) * len(substring) * N_substrings)
1降低到O(len(string) + len(substring) * N_substrings)
。
1:假设 您需要一种在一个文本中搜索有限模式集的算法。 最为人所知的有许多实现的算法是Aho–Corasick算法。indexOf
的len(string) * len(substring)
复杂度,它可能比的复杂度更好
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 在JavaScript中拆分日期字符串的更好方法是什么
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- jQuery字符串使用split()方法在空格后拆分字符串
- 使用查询字符串方法清除浏览器缓存
- 使用子字符串方法时应用程序挂起的原因
- 使用字符串方法更改Javascript对象中的DOM元素参数
- 在Javascript中对对象属性执行字符串方法
- 直接访问字符串方法
- 尝试我自己的字符串方法来删除元音
- 对字符串方法的ajax调用不起作用
- 字符串方法精确文本
- 如何在字符串原型扩展方法中使用字符串方法
- 有没有任何字符串方法,能让我把一串数字,转换成一串数字和字母
- 字符串方法
- 在定义新的字符串方法时使用reduce()
- 问题与自定义大写字符串方法,jQuery和Select2
- 使用比较字符串方法或使用==验证密码字段,但两者都不起作用
- 如何防止javascript缓存?查询字符串方法不起作用