字串 百科内容来自于: 百度百科

字符串(String),是由零个或多个字符组成的有限串行。 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。 通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

形式理论

设Σ是叫做字母表非空有限集合。Σ的元素叫做“符号”或“字符”。在Σ上的 字符串(或 )是来自Σ的任何有限串行。例如,如果Σ = {0, 1},则 0101是在Σ之上的字符串。
字符串的长度是在字符串中字符的数目(串行的长度),它可以是任何非负整数。“空串”是在Σ上的唯一的长度为0的字符串,并被指示为 ελ
在Σ上的所有长度为 n的字符串的集合指示为Σ。例如,如果Σ = {0, 1}则Σ= {00, 01, 10, 11}。注意Σ= {ε}对于任何字母表Σ。
在Σ上的所有任何长度的字符串的集合是Σ的Kleene闭包并被指示为Σ*。依据
,。例如,如果Σ = {0, 1}则Σ* = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011,…}。尽管Σ*自身是可数无限的,Σ*的所有元素都有有限长度。
在Σ上一个字符串的集合(就是Σ*的任何子集)被称为在Σ上的形式语言。例如,如果Σ = {0, 1},则带有偶数个零的字符串的集合({ε, 1, 00, 11, 001, 010, 100, 111, 0000, 0011, 0101, 0110, 1001, 1010, 1100, 1111,…})是在Σ上的形式语言。

串接和子串

“串接”是Σ*上的重要二元运算。对于Σ*中的两个字符串 st,它们的串接被定义为在 s中的字符串行之后跟随着 t中的字符串行,并被指示为 st。例如,Σ = {a, b,…, z},并且 s=bear且 t=hug,则 st=bearhug而 ts=hugbear。
字符串串接是结合性的,但非交换性运算。空串充当单比特;对于任何字符串 s,有ε s= sε = s。所以,集合Σ*和串接运算形成了幺半群,就是从Σ生成的自由幺半群。此外,长度函数定义从Σ*到非负整数的幺半群同态。
字符串 s被称为是字符串 t的“子串”或“因子”,如果存在(可能为空)字符串 uv使得 t= usv。“是其子串”关系定义了在Σ*上的偏序,其最小元是空串。

词典排序

经常需要定义在字串集合上的次序。如果字符表Σ有一个全序(cf.字母序),则可以定义在Σ*上的叫做词典序的全序。注意因为Σ是有限的,总是可以定义在Σ继而在Σ*上的良好次序。例如,如果Σ = {0, 1}并且0 < 1,则Σ*的词典次序是ε < 0 < 00 < 000 <…< 011 < 0110 <…< 01111 <…< 1 < 10 < 100 <…< 101 <…< 111…

字串运算

在形式理论中经常出现一些在字串上的额外运算。它们在条目字符串运算中给出。
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定