| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构-串详解(字符串)(类C语言版) -> 正文阅读 |
|
[数据结构与算法]数据结构-串详解(字符串)(类C语言版) |
目录 串的概念串(String)——由零个或多个任意字符组成的有限序列。 空串用?表示。 概念子串:串中任意个连续字符组成的子序列称为该串的子串。 主串:包含子串的串相应地称为主串。 字符位置:字符在序列中的序号为该字符在串中的位置。 子串位置:子串第一个字符在主串中的位置。 空格串:由一个或多个空格组成的串,与空串不同。 实例
它们的长度分别是:3、4、7、8 c的子串是:a、b d的子串是:a、b a在c中的位置是:1 a在d中的位置是:1 b在c中的位置是:4 a在d中的位置是:5 串相等当且仅当两个串的长度相等并且各个对应位置上的字符都相同时,这两个串才是相等的。 如:"abcd"?≠ "abc" 所有空串是相等的。 串的类型定义与存储结构类型定义
存储结构串的顺序存储结构
串的链式存储结构?优点:操作方便 缺点:存储密度较低 存储密度=串值所占的存储/实际分配的存储。 解决其存储密度低的方案:可将多个字符存放在一个结点中。
串的算法算法目的: ? ? ? ? 确定主串中所含子串(模式串)第一次出现的位置(定位)。 算法应用: ? ? ? ? 搜索引擎、拼写检查、语言翻译、数据压缩 算法种类: ? ? ? ? ·?BF算法(Brute-Force,又称古典的、经典的、朴素的、穷举的)。 ? ? ? ? ·?KMP算法(特点:速度快) BF算法算法步骤① 分别利用计数指针 i 和 j 指示主串 S 和模式 T中当前正待比较的字符位置, i?初值为pos, j 初值为1。
实例S= "aaaaaba " T= "ba" ?时间复杂度例:S='0000000001',T='0001',pos=1 若n为主串长度,m为子串长度,最坏情况是: ·?主串前面n-m个位置都部分匹配到子串的最后一位,即这n-m位各比较了m次。 ·?最后m位也各比较了1次。 总次数为:(n-m)*m+m = (n-m+1)*m 若m<<n,则算法复杂度O(n+m) KMP算法
? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:43:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |