**串:**由零個或多個字元組成的有限序列,又名叫字串。
操作index的實現演算法:
/* t為非空串。若主串s中第pos個字元之後存在與t相等的子串, */
/* 則返回第乙個這樣的子串在s中的位置,否則返回0 */
intindex
(string s, string t,
int pos)
}return0;
/* 若無子串與t相等,返回0 */
}
用基本陣列實現
/* 返回子串t在主串s中第pos個字元之後的位置。若不存在,則函式返回值為0。 */
/* 其中,t非空,1≤pos≤strlength(s)。 */
intindex
(string s, string t,
int pos)
else
/* 指標後退重新開始匹配 */}if
(j > t[0]
)return i-t[0]
;else
return0;
}
/* 通過計算返回子串t的next陣列。 */
void
get_next
(string t,
int*next)
else
k= next[k]
;/* 若字元不相同,則k值回溯 */
}}
/* 返回子串t在主串s中第pos個字元之後的位置。若不存在,則函式返回值為0。 */
/* t非空,1≤pos≤strlength(s)。 */
intindex_kmp
(string s, string t,
int pos)
else
/* 指標後退重新開始匹配 */}if
(j > t[0]
)return i-t[0]
;else
return0;
}
/* 求模式串t的next函式修正值並存入陣列nextval */
void
get_nextval
(string t,
int*nextval)
else
k= nextval[k]
;/* 若字元不相同,則k值回溯 */
}}
大話資料結構 串
1.串的定義 串是由0個或多個字元組成的有限序列,也叫做字串。串中 字元數目n稱為串的長度。子串 串中任意個數的連續字元組成的子串行稱為該字串的子串,包含該子串的串稱為主串。子串中的位置就是該子串第乙個字元在主串中的序號。2.串的比較 計算機的字串標準包括 ascii碼和unicode碼。其中asc...
《大話資料結構》
函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...
《大話資料結構》
常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...