版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Albert_Bolt/article/details/82356616
字符串
定义
- 字符串是 n ( >= 0 ) 个字符的有限序列
- 记作 S:“c1c2c3…cn”,S 是串名字,“c1c2c3…cn”是串值,ci是串中字符,n是串的长度。
串的表示
- 定长顺序存储表示:用一组地址连续的存储单元存储串值的字符序列。
- 堆分配存储表示:在C语言中用malloc()和free()来管理。
- 块链存储表示:用链表存储串,每个结点存储串的n个字符,当串长不是n的整数倍时最后一个结点剩余位置用空字符#补齐。
- 优点是便于连接操作。
- 缺点是占用存储量大,操作复杂。
操作
- 生成串:S.ch=(char*)malloc(sizeof(char))
- 在串A中插入串B
- 求串长度:S.length()
- 比较两个串:比较串的长度和字符的大小
- 清空串:串的长度设为0 free(S.ch); S.ch=NULL; S.length=0;
- 提取子串:串S中从pos位置起长度为len的子串,如果len>=0,len<=S.length-pos+1,1 =< pos <= S.length,把这些位置的值复制到目标串
串的模式匹配
- 目标:在串中寻找子串(第一个字符)在串中的位置
- 模式:在模式匹配中,子串称为模式,串称为目标。
- 示例:目标 T : “Beijing”
模式 P : “jin”
匹配结果 = 3 - KMP算法