本帖最后由 happytc 于 2012-3-30 09:42 编辑
无聊的产物, 只是跟正则沾点边, 其实用 StringInStr 更好吧.
原来的代码还有点错误, 现在已修正.
user3000 发表于 2012-3-30 09:18
效率有点低
我把你的Code中的字符串增加了拷贝了20次,计算时间就比较长了,我的机子上花了10秒
#include <array.au3>
Local $hInit = TimerInit()
Local $a ="manbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahffmanbanc12aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3123jffsanadzwdanxsedffdffdffdffdffdffvdahff"
;$a="manbanc12aaa3123jffsanadzwdanxsedffdffdffdffdffdffvdaf"
$array = _Get_Max_Substring($a)
Local $iDiff = TimerDiff($hInit)
MsgBox(0, 0, $iDiff)
_ArrayDisplay($array)
Func _Get_Max_Substring($str, $sLen = 2)
Local $r[2] = [0, '']
Local $len = StringLen($str)
Local $offset, $count
For $i = 1 To $len - $sLen + 1
$subStr = StringMid($str, $i, $sLen)
$count = 1
$offset = 1
While 1
StringRegExp($str, $subStr, 1, $offset)
If @error = 0 Then
$offset = @extended
$count += 1
Else
ExitLoop
EndIf
WEnd
If $count > $r[0] Then
$r[0] = $count
$r[1] = $subStr
EndIf
Next
Return $r
EndFunc ;==>_Get_Max_Substring
|