今天看了一些文章,然後也抄了一些kmp演算法的**,然後用來跟暴力匹配做了多次的較量,但明顯的暴力匹配的用時比kmp的少,甚至有時少很多。難道是我的測試資料剛好測到了kmp演算法的最壞情況??不應該吧!!有大佬看一下麼?
public
class
forcematch
else
}//匹配到 則返回子串的位置,否則返回-1
return j == sos.length ? i - j :-1
;}}
public
class
kmpelse k = next[k];}
}public
intkmp
(string mainstring, string patternstring)
else j = next[j]
;//j回退。。。}if
(j >= ps.length)
return
(i - ps.length)
;//匹配成功,返回子串的位置
else
return(-
1);//沒找到
}}
@test
public
void
testforcematch()
throws ioexception
@test
public
void
testkmp()
throws ioexception
測試序號
主串資料(檔案中讀取[114mb])
子串資料
暴力匹配
kmp子串出現位置
1test_string_1.txt
lin19780731
295ms
469ms
66900144
2test_string_1.txt
aslnfkjasnjkfnajkfansfjksajk
256ms
786ms-12
test_string_1.txt
zhao
291ms
178ms0
文章原創,**卻是我抄來的,嘿嘿
暴力匹配演算法,首尾匹配演算法,KMP演算法
10170330 容易 include include include define error 0 define maxsize 100 using namespace std 串的暴力匹配演算法 brute force 該函式的作用是返回子z串t在s中第position個字元之後的位置 時間複雜...
KMP演算法 1 暴力匹配演算法
假設現在我們面臨這樣乙個問題 有乙個文字串s,和乙個模式串p,現在要查詢p在s中的位置,怎麼查詢呢?如果用暴力匹配的思路,並假設現在文字串s匹配到 i 位置,模式串p匹配到 j 位置,則有 如果當前字元匹配成功 即s i p j 則i j 繼續匹配下乙個字元 如果失配 即s i p j 令i i j...
演算法 字串匹配演算法 暴力匹配演算法 KMP演算法
如果當前字元匹配成功,即 str1 i str2 j 則 i j 繼續匹配下乙個字元 如果當前字元匹配失敗,則 i i j 1 j 0 也就是每次匹配失敗時,i回溯,j被置為0 public static void main string args 暴力匹配演算法 public static int...