字串運算是我們開發軟體的基本功,其中比較常用的功能有字串長度的求解、字串的比較、字串的拷貝、字串的upper等等。另外乙個經常使用但是卻被我們忽視的功能就是字串的查詢。word裡面有字串查詢、notepad裡面有字串查詢、winxp裡面也有系統自帶的字串的查詢,所以編寫屬於自己的字串查詢一方面可以提高自己的自信心,另外一方面在某些情況下可以提高軟體的執行效率。下面我們就三個方面討論一下字串的查詢方法:
1)基本字串查詢
2)kmp查詢
3)多核cpu下的字串查詢
(一)、首先介紹一下普通的字串查詢方法:
a)指標是否為空,否則返回
b)判斷str是否為『\0』,判斷剩下來的字串長度是否》=模板字串的長度,只有乙個不符合,函式結束執行
c)依次比較字串和模板字串的內容,如果全部符合,返回;只要乙個不符合,break跳出,str加1,轉b)
那麼演算法應該怎麼寫呢?朋友們可以自己先書寫一下,即使在紙上寫也可以。
char* strstr(const char* str, char* data)
if(index == len)
return (char*) str;
str++;
} return null;
}
為了說明**的正確性,我們可以編寫幾個測試用例測試一下。
void test()
一步一步寫演算法(之字串查詢 上篇)
字串運算是我們開發軟體的基本功,其中比較常用的功能有字串長度的求解 字串的比較 字串的拷貝 字串的upper等等。另外乙個經常使用但是卻被我們忽視的功能就是字串的查詢。word裡面有字串查詢 notepad裡面有字串查詢 winxp裡面也有系統自帶的字串的查詢,所以編寫屬於自己的字串查詢一方面可以提...
一步一步寫演算法(之字串查詢 上篇)
字串運算是我們開發軟體的基本功,其中比較常用的功能有字串長度的求解 字串的比較 字串的拷貝 字串的upper等等。另外乙個經常使用但是卻被我們忽視的功能就是字串的查詢。word裡面有字串查詢 notepad裡面有字串查詢 winxp裡面也有系統自帶的字串的查詢,所以編寫屬於自己的字串查詢一方面可以提...
一步一步寫演算法(之字串查詢 中篇)
昨天我們編寫了簡單的字元查詢函式。雖然比較簡單,但是也算能用。然而,經過我們仔細分析研究一下,這麼乙個簡單的函式還是有改進的空間的。在什麼地方改進呢?大家可以慢慢往下看。下面的 是優化前的 現在再貼一次,這樣分析起來也方便些 char strstr const char str,char data ...