建立乙個文字檔案,統計給定單詞在文字檔案**現的總次數及位置;
就是遍歷主串,然後把待匹配字串與子串進行比對,先把待匹配子串的第乙個字母與主串進行匹配,若匹配成功,則兩串的座標依次 ++,匹配不成功時,主串座標返回到開始匹配時的座標,待匹配串座標清零,若待匹配座標等於待匹配子串長度,則證明匹配成功, 返回匹配完畢主串的第乙個座標,否則返回-1
假設主串的長度為n,待匹配串的長度為m,因為需要遍歷主串,每次匹配的長度都小於等於m,所以它的時間複雜度是o(m*n)。
kmp演算法是一種改進的字串匹配演算法,由d.e.knuth,j.h.morris和v.r.pratt提出的。kmp演算法的核心是利用匹配失敗後的資訊,儘量減少模式串與主串的匹配次數以達到快速匹配的目的。具體實現就是通過乙個next()函式實現,函式本身包含了模式串的區域性匹配資訊。kmp演算法的時間複雜度o(m+n) [1] 。
下面展示一下kmp演算法具體應用:
public
void
kmp(string target)
else}if
(j == p.length)}if
(count==0)
long endtime=system.
currenttimemillis()
;//獲取結束時間
system.out.
println(+
(endtime-starttime)
+"ms");
} ```
文字檔案單詞的檢索與計數
建立乙個文字檔案,統計給定單詞在文字檔案 現的總次數及位置。文字檔案中每個單詞不包含空格且不跨行,單詞由字串行構成且區分大小寫,統計給定單詞在文字檔案 現的總次數,檢索輸出的某個單詞出現在文字中的行號 在該行 現的位置。設計資料量大的文字,進行子串的查詢處理,分析演算法執行的時間效率,對所有輸出的匹...
文字檔案單詞的檢索與計數預習
實驗任務 建立乙個文字檔案,統計給定單詞在文字檔案 現的總次數及位置 實現要求 文字檔案中每個單詞不包含空格且不跨行,單詞由字串行構成且區分大小寫,統計給定單詞在文字檔案 現的總次數,檢索輸出的某個單詞出現在文字中的行號 在該行 現的位置。設計資料量大的文字,進行子串的查詢處理,分析演算法執行的時間...
文字檔案單詞的檢索及計數
要求程式設計建立乙個文字檔案,每個單詞不包括空格及跨行,單詞由字串行構成且區分大小寫,完成以下功能 統計給定單詞在文字檔案 現的總次數 檢索輸出某單詞在文字檔案中首次出現的行號及位置。如下 include include include void creatfile file fp void sea...