本文在阅读大话数据结构这本书的基础上,结合java语言的特点,来理解串。
串
串(string)是由零个或多个字符组成的有限序列,又名字符串。
串的存储结构
串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。 用“\0”来表示串的终结,不计入串长度,但是计入数组长度。 两个长度不同的串不可能相等。
串的链式存储结构要考虑一个结点是存放一个字符(会造成很大的空间浪费)还是多个字符。除了链接串与串的操作有一定方便外,总的来说不如顺序存储量或,性能也不如顺序存储结构好。
朴素的模式匹配算法
串的模式匹配:串的定位操作。
时间复杂度:O(1)–最好;O(n+m)–平均;O(n-m+1)*m–最不好
1 | /** |
KMP模式匹配算法
1 | /** |
改进的KMP模式匹配算法
1 | /** |