正则表达式时间复杂度O(n)
来源:互联网 发布:淘宝模特拍摄动作 编辑:程序博客网 时间:2024/05/14 16:59
1.有几千个字符串,要判断每个字符串中是否包含 “Book”,可以有两种方法:
1>字符串处理
在循环内:
if( str1.IndexOf("Book") > 0 )
{
}
2>正则表达式
Regex r = new Regex( "Book" ); // 在循环外
在循环内:
if( r.IsMatch( str1 ) )
{
}
以上那种执行效率会高些?
更进一步,假如问题是:在几千个字符串中找出含有 “Book”和/或 “Expert”但不包含“Result”的字符串,那种方法效率高些?用正则表达式该怎样写?
2.正则表达式时间复杂度
Regex的算法复杂度是固定的O(n),在完成了Regex到有限自动机的转换以后,判断一个字符串是否匹配所需的时间只和该字符串的长度有关,这个字符串里面的每个字符至多会被检查一次。
String实现的IndexOf采用的是比较笨的办法,某些情况下它可能需要检查一个字符多次,比如匹配abac到ababac的时候。所以如果有大量的字符串需要检查,Regex应该要比IndexOf优化。如果有更多的匹配条件,那么Regex的优势就更明显。你的例子“Book”和/或 “Expert”但不包含“Result”,IndexOf要检查字符串3次,但是Regex仍然只要一次(但是“不包含”的Regex写起来不是很容易)。
0 0
- 正则表达式时间复杂度O(n)
- 时间复杂度O(n)是什么意思
- 时间复杂度O(f(n))
- 时间复杂度O(n),空间复杂度O(1)的排序
- 时间复杂度为O(n),空间复杂度为O(1)
- O(N)时间复杂度、O(1)空间复杂度 构造数组
- 时间复杂度O(n)什么意思
- 时间复杂度O(n)什么意思
- 时间复杂度为O(n)的排序
- O(n)时间复杂度旋转字符串
- 关于时间复杂度O(N)的思考
- 筛素数 时间复杂度:O(N)
- 建堆的时间复杂度O(N)
- 蛇形打印矩阵,时间复杂度O(n)
- 时间复杂度O(n)什么意思
- 建堆O(n)时间复杂度证明
- 排序算法-o(n)时间复杂度
- 时间复杂度O(n)什么意思
- datagrid getselected/getselections/getData之间的用法差异
- Java foreach(加强for循环)
- FFmpeg - 音频解码
- 欢迎使用CSDN-markdown编辑器
- SpringMVC+Hibernate+Spring整合实例
- 正则表达式时间复杂度O(n)
- Linux 每天自动备份mysql数据库的方法
- UI层自动化测试框架(三):基础层
- 【龙印】3D打印固件Marlin中限位开关相关代码解读
- 知乎爬虫
- centos 7 lamp+lnmp环境
- 关于ASP.NET读取EXCEL表格的办法
- Redis使用总结之与Memcached异同
- curl采集