正则表达式时间复杂度O(n)
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到有限⾃动机的转换以后,判断⼀个字符串是否匹配所需的时间只和该字符串的长度有关,这个字符串⾥⾯的每个字符⾄多会被检查⼀次。
时间正则表达式java
String实现的IndexOf采⽤的是⽐较笨的办法,某些情况下它可能需要检查⼀个字符多次,⽐如匹配abac到ababac的时候。
所以如果有⼤量的字符串需要检查,Regex应该要⽐IndexOf优化。如果有更多的匹配条件,那么Regex的优势就更明显。你的例
⼦“Book”和/或 “Expert”但不包含“Result”,IndexOf要检查字符串3次,但是Regex仍然只要⼀次(但是“不包含”的Regex写起来不是很容易)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。