KMP演算法跟暴力匹配演算法的速度較量

2021-10-12 04:19:03 字數 1137 閱讀 4281

今天看了一些文章,然後也抄了一些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...