- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
B。宮的唱
☆字符串的相关概念
☆ Python字符串(回顾)
令字符串匹配和算法
进一步的模式匹配问题
◇正则表达式
☆ Python的正则表达式
◆应用举例
数据结构和算法( Python语言版):字符串
裘宗燕 字符串
■讨论字符串,首先要有一个确定的字符集
口“字符”是一个抽象概念,字符集是有穷的一组字符构成的集合
口人们经常考虑在计算机里使用的标准字符集,实际上,完全可以拿
任意数据元素的集合作为字符集
字符串(简称串)是特殊的线性表,表中元素取自选定的字符集
其不同于一般表的特点是支持一组以串为对象的操作
长度:串中字符的个数称为串的长度
口长度为0的串称为空串
口在任意一个字符集里,只有唯一的一个空串
■与一般的表类似
口字符串里的字符顺序排列,串里的每个字符有其确定位置
口我们用0开始的自然数表示位置
数据结构和算法( Python语言版):字符串
裘宗燕,2017323-2
字符串
■串相等:串的相等基于字符集里的字符定义
s1和s2相等,如果其长度相等,而且对应位置的各对字符分别相同
■假定字符集中的字符有一个全序,串的字典序定义如下:
对于串S1=a01…an1,S2=bb1…bn
定义s1<s2,如果存在一个k使a;=b;(=0,1,…k-1)而且ak<b
或者n<m而且对i=0,1,…n-1都有a2=b
显然,字典序是字符串集合上的一个全序
■串与串的最重要运算是拼接( concatenate)
上面S1和2的拼接是串S=041
1
显然,s的长度等于s1和s2的长度之和
在 Python里拼接运算用+表示
数据结构和算法( Python语言版):字符串
裘宗燕,2017323-
字符串
两个串之间还有一个重要的关系是“子串关系”
称s1为s2的一个子串,如果存在两个串s和s使下式成立
S2=S+S1+S'(借用 Python的写法
口子串也是串。直观看,子串是原串中连续的一段字符序列形成的串
显然,一个串可以是或者不是另一个串的子串
口如果s是S2的子串,也说S1在S2里出现,称S2里与s1相同的
字符段的第一个字符的位置为S1在S2里出现的位置
口s2里可能出现多个与S1相同的段,这时说S1在S2里多次出现
■注意:s1在s2中的多个出现可能不独立,相互重叠。例如
babb在 babbabbbbabb里有三个出现,前两个有重叠
■根据定义,很显然,空串是任何字符串的子串;另一方面,任何字符串
s也都是该串本身的子串
数据结构和算法( Python语言版):字符串
裘宗燕 字符串
两种特殊子串
口如果存在s使S2=S1+S,称S1为s2的一个前缀
口如果存在s使得S2=S+S1,称S1为s2的一个后缀
直观说,一个串的前缀就是该串开头的一段字符构成的子串,后缀就
是该串最后的一段字符构成的子串
显然,空串和s既是s的前缀,也是s的后缀
其他有用的串运算
口串s的n次幂s"是连续n个s拼接而成的串(在 Python语言里
用s*n表示)
口串替换,指将一个串里的一些(互不重叠的)子串代换为另一些串
得到的结果(由于可能重叠,需规定代换的顺序,如从左到右)
口还有许多有用的串运算,可以参考 Python的st类型,或其他语
言的字符串类型(经典是 SNOBOL语言)
数据结构和算法( Python语言版):字符串
裘宗燕,2017323
文档评论(0)