1.概念:
由零个或多个字符组成的有限序列。零个字符的串称为空串,长度为零,串中任意个连续的字符组成的子序列被称为该串的子串。包含子串的串相应的称为主串。通常称字符在序列的序号为该字符在串中的位置。子串在主串的位置则以子串的第一个字符在主串中的位置来表示。
存储结构
-
顺序存储:使用数组存储字符,常见于C语言中的字符数组。
-
链式存储:使用链表存储字符,每个节点存储一个或多个字符。
2.串的操作:
1.查找子串
2.求一个子串
3.在串的某一个位置插上一个子串以及删除一个子串
3.代码实现:(C语言中的字符数组)
#include <stdio.h>
#include <string.h>int main() {char str1[] = "Hello";char str2[] = "World";char result[20];// 连接操作strcpy(result, str1);strcat(result, " ");strcat(result, str2);printf("连接后的字符串: %s\n", result);// 比较操作if (strcmp(str1, str2) == 0) {printf("字符串相等\n");} else {printf("字符串不相等\n");}// 求子串操作char substr[10];strncpy(substr, str1, 3);substr[3] = '\0';printf("子串: %s\n", substr);return 0;
}
运行结果:
连接后的字符串: Hello World
字符串不相等
子串: Hel
4.应用实例:
-
文本编辑:查找、替换、插入、删除等操作。
-
生物信息学:DNA序列匹配。
-
数据压缩:字符串压缩算法。
-
搜索引擎:关键词匹配。
5.优缺点:
总结
优点 | 缺点 |
---|---|
简单易用 | 空间效率低 |
广泛应用 | 操作效率问题 |
灵活性 | 不可变性(某些语言) |
高效的存储和访问 | 模式匹配复杂度高 |
丰富的算法支持 | 编码问题 |