第四章 串

合集下载

严蔚敏数据结构-第四章 串

严蔚敏数据结构-第四章 串
S1 4 a b c d S2 2 e f T 6 a b c d e f
15
(2)S1串长 最大串长 串长<最大串长 串长 最大串长; S1,S2串长和 最大串长 串长和>最大串长 串长和 最大串长;
S1 6 a b c d e f S2 6 g h i j k l T 8 a b c d e f g h
3
串的抽象数据类型的定义: 串的抽象数据类型的定义: ADT String{ 数据对象: 数据对象:D={ai|ai∈CharacterSet, i=1,2,...,n, n>=0} 数据关系: 数据关系:R1={<ai-1,ai>|ai-1,ai∈D, i=2,...,n} 基本操作: 基本操作: StrAssign(&T, chars)
11
作业: 作业: 1.用5种串的基本操作(StrAssign、StrCompare、StrLen Concat、SubString)来逻辑实现StrInsert(&S, pos, T)操作 、 操作. )
Status StrInsert(String S, int pos , String T) { if ……….. return error; , , ); ); ); );
chars是字符串常量。生成一个其值等于chars的串 。 是字符串常量。生成一个其值等于 的串T。 是字符串常量 的串
StrCopy(&T, S)
存在则由串S复制得串 串S存在则由串 复制得串 存在则由串 复制得串T
StrEmpty(S)
存在则若S为空串 串S存在则若 为空串 返回真否则返回假 存在则若 为空串,返回真否则返回假
Sub返回串 的第pos个字符起长度为 返回串S的第 个字符起长度为len的子串 用Sub返回串S的第pos个字符起长度为len的子串

数据结构——第4章 串(C#)

数据结构——第4章 串(C#)
将当前链串的所有结点?nstr将q结点插入到尾部将q结点插入到尾部将链串t的所有结点?nstr将q结点插入到尾部尾结点的next置为null返回新建的链串5求子串substrij返回当前串中从第i个字符开始的连续j个字符组成的子串ຫໍສະໝຸດ 第4章 串4.1 串的基本概念
4.1.1 什么是串 串(或字符串)是由零个或多个字符组成的有限序列。 记作str="a1a2…an"(n≥0),其中str是串名,用双引号括 起来的字符序列为串值,引号是界限符,ai(1≤i≤n)是一 个任意字符(字母、数字或其他字符),它称为串的元素, 是构成串的基本单位,串中所包含的字符个数n称为串的 长度,当n=0时,称为空串。
4.2 串的存储结构
4.2.1 串的顺序存储结构-顺序串
和顺序表一样,用一个data数组(大小为MaxSize)和 一个整型变量length来表示一个顺序串,length表示data数 组中实际字符的个数。 定义顺序串类SqStringClass如下:
class SqStringClass { const int MaxSize=100; public char[] data; //存放串中字符 public int length; //存放串长 public SqStringClass() //构造函数,用于顺序串的初始化 { data=new char[MaxSize]; length=0; } //顺序串的基本运算 }
(9)串输出DispStr() 将当前串s的所有字符构成一个字符串并输出。对应的算 法如下:
public string DispStr() { int i; string mystr=""; if (length==0) mystr = "空串"; else { for (i=0;i<length;i++) mystr+=data[i].ToString(); } return mystr; }

数据结构第4章 串

数据结构第4章  串
ring s, SString t)
/*若串s和t相等则返回0;若s>t则返回正数;若s<t则返 回负数*/
{ int i;
for (i=0;i<s.len&&i<t.len;i++)
if (s.ch[i]!=t.ch[i]) return(s.ch[i] - t.ch[i]);
初 始 条 件 : 串 S 存 在 ,1≤pos≤StrLength(S) 且 1≤len≤StrLength(S)-pos+1
操作结果:用Sub返回串S的第pos个字符起长度为len的子串
返回主目录
(11)StrIndex(S,T,pos)
初始条件: 串S和T存在,T是非空串, 1≤pos≤StrLength(S)
return(s.len); }
返回主目录
(7)清空函数
StrClear(SString *s) /*将串s置为空串*/ {
s->len=0; }
返回主目录
(8)连接函数
(1) 连接后串长≤MAXLEN,则直接将B加在A的 后面。 (2) 连接后串长>MAXLEN且LA<MAXLEN,则B 会有部分字符被舍弃。 (3) 连接后串长>MAXLEN且LA=MAXLEN,则B 的全部字符被舍弃(不需连接)。
for (i=s->len + t.len-1;i>=t.len + pos;i--)
s->ch[i]=s->ch[i-t.len];
for (i=0;i<t.len;i++) s->ch[i+pos]=t.ch[i];
s->len=s->len+t.len;

数据结构-第4章 串

数据结构-第4章 串
真子串是指不包含自身的所有子串。
4.1 串的类型定义
子串的序号:将子串在主串中首次出现时的该 子串的首字符对应在主串中的序号,称为子串 在主串中的序号(或位置)。 【例】 A=“abcdefbbcd”,B=“bcd”,B在A中的 序号为2。 特别地,空串是任意串的子串,任意串是其自 身的子串。
4.1.2 串的抽象数据类型定义
//查找ab子串
if (p->data==‘ a’ && p->next->data==‘b’)
{ p->data=‘x’; p->next->data=‘z’;
q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data=‘y’;
q->next=p->next; p->next=q;
s: a a a a b c d
t: a ab bac acb bc c ✓ 匹配成功 算法的思路是从s的每一个字符开始依次与t的 字符进行匹配。
4.2.1 Brute-Force算法
int BFIndex(SqString s,SqString t)
{ int i=0, j=0,k;
while (i<s.length && j<t.length)
4.1 串的类型定义 4.2 串的表示和实现 4.3 串的模式匹配算法
本章要求
理解: 1、串的基本概念、类型定义 2、串的存储表示和实现 3、串的KMP算法
掌握: 4、串的简单模式匹配算法(BF)
第4章 串的基本概念
串(或字符串):是由零个或多个字符组成 的有限序列。
串的逻辑表示: S=“a1a2…ai…an”,其中S为 串名,ai (1≤i≤n)代表单个字符,可以是字母、 数字或其它字符(包括空白符)。 串值:双引号括起来的字符序列。双引号不是 串的内容,只起标识作用。

数据结构第四章串习题及答案

数据结构第四章串习题及答案

习题四串一、单项选择题‎1.下面关于串‎的的叙述中‎,哪一个是不‎正确的?()A.串是字符的‎有限序列 B.空串是由空‎格构成的串‎C.模式匹配是‎串的一种重‎要运算 D.串既可以采‎用顺序存储‎,也可以采用‎链式存储2.串是一种特‎殊的线性表‎,其特殊性体‎现在()。

A.可以顺序存‎储 B.数据元素是‎一个字符C.可以链接存‎储 D.数据元素可‎以是多个字‎符3.串的长度是‎指()A.串中所含不‎同字母的个‎数 B.串中所含字‎符的个数C.串中所含不‎同字符的个‎数 D.串中所含非‎空格字符的‎个数4.设有两个串‎p和q,其中q是p‎的子串,求q在p中‎首次出现的‎位置的算法‎称为()A.求子串 B.联接 C.匹配 D.求串长5.若串S=“softw‎a re”,其子串的个‎数是()。

A.8 B.37 C.36 D.9二、填空题1.含零个字符‎的串称为_‎_____‎串。

任何串中所‎含____‎__的个数‎称为该串的‎长度。

2.空格串是指‎__ __,其长度等于‎__ __。

3.当且仅当两‎个串的__‎____相‎等并且各个‎对应位置上‎的字符都_‎_____‎时,这两个串相‎等。

一个串中任‎意个连续字‎符组成的序‎列称为该串‎的____‎__串,该串称为它‎所有子串的‎_____‎_串。

4.INDEX‎(‘DATAS‎T RUCT‎U RE’,‘STR’)=_____‎___。

5.模式串P=‘abaab‎c ac’的next‎函数值序列‎为____‎____。

6.下列程序判‎断字符串s‎是否对称,对称则返回‎1,否则返回0‎;如 f("abba")返回1,f("abab")返回0;int f((1)__ _____‎_){int i=0,j=0;while‎(s[j])(2)___ _____‎;for(j--; i<j && s[i]==s[j]; i++,j--);retur‎n((3)___ ____)}7.下列算法实‎现求采用顺‎序结构存储‎的串s和串‎t的一个最‎长公共子串‎。

串PPT课件专题培训

串PPT课件专题培训

例:
1.空串和空格串有无区别? 有区别。空串(Null String)是指长度为零旳串;而空 格串(Blank String)是指包括一种或多种空格旳字符串 .
2.既有下列4个字符串:
a =‘BEI’ b =‘JING’ c = ‘BEIJING’ d = ‘BEI JING’
问:① 他们各自旳长度? ② b是哪个串旳子串?它在主串中旳位置是多少?
T.length =i;
}
return OK;
}//StrAssign
三、链式存储:用链表存储串值,易插入和删除。
Typedef struct { char *ch; // 若非空串,按串长分配空间; 不然 ch = NULL int length; //串长度
}HString
例:用“堆”实现串插入操作(教材P75)
Status StrInsert ( HString &S, int pos, HString T ){
❖ 堆分配存储表达
——用一组地址连续旳存储单元存储串值旳字符 序列,但存储空间是在程序执行过程中动态分配 而得。
链式 存储
❖ 串旳块链存储表达
——链式方式存储
一、定长顺序存储
用一组连续旳存储单元来存储串,直接使用定长旳字符 数组来定义,数组旳上界预先给出,故称为静态存储分 配。
例如: #define MAXSTRLEN 255 //顾客可用旳最大串长 typedef unsigned char SString[MAXSTRLEN+1 ]; SString S; //S是一种可容纳255个字符旳顺序串。
Status Concat(SString &T, SString S1, SString S2,) { // 用T返回由S1和S2联接而成旳新串。若未截断, 则返回TRUE,不然FALSE。

第四章 串答案

第四章答案4.1 简述下列每对术语的区别:空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。

答:●空串是指不包含任何字符的串,它的长度为零。

空白串是指包含一个或多个空格的串,空格也是字符。

●串常量是指在程序中只可引用但不可改变其值的串。

串变量是可以在运行中改变其值的。

●主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。

●静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。

动态分配的顺序串是在编译时不分配串值空间,在运行过程中用malloc和free等函数根据需要动态地分配和释放字符数组的空间(这个空间长度由分配时确定,也是顺序存储空间)。

●目标串和模式串:在串匹配运算过程中,将主串称为目标串,而将需要匹配的子串称为模式串,两者是相对的。

●有效位移和无效位移:在串定位运算中,模式串从目标的首位开始向右位移,每一次合法位移后如果模式串与目标中相应的字符相同,则这次位移就是有效位移(也就是从此位置开始的匹配成功),反之,若有不相同的字符存在,则此次位移就是无效位移(也就是从此位置开始的匹配失败)。

4.2 假设有如下的串说明:char s1[30]="Stocktom,CA", s2[30]="March 5 1999", s3[30], *p;(1)在执行如下的每个语句后p的值是什么?p=stchr(s1,'t'); p=strchr(s2,'9'); p=strchr(s2,'6');(2)在执行下列语句后,s3的值是什么?strcpy(s3,s1); strcat(s3,","); strcat(s3,s2);(3)调用函数strcmp(s1,s2)的返回值是什么?(4)调用函数strcmp(&s1[5],"ton")的返回值是什么?(5)调用函数stlen(strcat(s1,s2))的返回值是什么?解:(1) stchr(*s,c)函数的功能是查找字符c在串s中的位置,若找到,则返回该位置,否则返回NULL。

第四章 串

主串S首次出现的位置;否则返回0
– 例如
• 主串S = • 子串T = CD • 则index(S,T),返回子串T在S中,第一次出现的位置3
19
串的模式匹配
Brute-Force算法基本思想: • 从目标串s 的第一个字符起和模式串t的第一个字符进行比较 • 若相等,则继续逐个比较后续字符,否则从串s 的第二个字 符起再重新和串t进行比较。 • 依此类推,直至串t 中的每个字符依次和串s的一个连续的字 符序列相等,则称模式匹配成功,此时串t的第一个字符在串s 中的位置就是t 在s中的位置,否则模式匹配不成功。
两式联立可得:“T0…Tk-1”= “Tj-k…Tj-1”
注意:j为当前已知的失配位置,我们的目标是计算新起点k。式中仅剩 一个未知数k,理论上已可解!
奇妙的结果:k仅与模式串T有关!
27
新起点k怎么求?
根据模式串T的规律:“T0…Tk-1”=“Tj-k …Tj-1” 由当前失配位置j(已知),归纳计算新起点k的表达式。
j=next[j]的位置(即模式串继续向右移动),再比较 si 和 tj 。
依次类推,直到下列两种情况之一: 1)j退回到某个j=next[j]时有 si = tj,则指针各增1,继续匹配; 2)j退回至j=0,此时令指针各增1,即下一次比较 si+1和 t0 。
30
串的模式匹配:KMP算法
• 模式串的next函数
6
串的基本概念
4.两个字符串相等的充分必要条件为两个字符串的长度相等,并 且对应位置上的字符相等。
例如:‘abcd’ ≠ ‘bacd’ ‘abcd’ = ‘abcd’
7
串的基本操作
1.给串变量赋值 ASSIGN(S1,S2)

数据结构第四章串


(2) 置换操作:用联接算法来实现。用在求子串序号(a,b,h)中得到的 ind 将a分成3部分:第一部分是b在a中的第一个位置前的子串substr (a,1,ind-1);第二部分是b(以c来代替);第三部分是b在a中的最后一个 位置后的子串substr(a,ind+m,n)。 即 a substr(a,I,ind-1)||c||substr(a,ind+m,n)
4. 2 串的基本运算
对于串的基本操作,许多高级语言均提供了相应的运算或标准 库函数来实现。下面仅介绍几种常用的串运算。 (1)联接(concatenation) 联接是串的最基本,最重要的运算。两个串的联接是将一个串 紧接着放在另一个串的末尾。联接用符号“||”表示。 例如:a=”bei” b=“jing” a || b=“beijing” (2)求子串(substr) SUBSTR(a,m,n)功能: 从a 中截取子串,从第m个字符到第n个 字符的子串(m<n)。子串应是将串a中取出从标号m开始的连续n -m+1个字符。 例:SUBSTR(“ABCDEFG”,2,3)=”BC” 利用求子串及联接两种运算可以完成对串的插入、删除和修改。 例如: a=“bejing” b=“iy” ,将b插入到a的第二个字符之后 得到新的串s,则 s=substr(a,1,2) || b || substr(a,3,6) =“beiyjing”
(5)置换(repleace) 置换运算repleace(a,b,c)表示在a中搜索b,若b是a的 子串,就以c代替b,若不是,则经置换后,a不变。 例如:a=“monday”, b=“mon”, c=“thurs” repleace(a,b,c)=“thursday” 置换运算是将串a中所有的子串b用c来代替。 在一部分程序设计语言中没有实现,仍可用前三种运 算来完成。 置换算法过程:实现置换运算repleace(a,b,c),同 样也是在a中搜索是否与b相同的子串,若有,以c来代 替,再继续向下搜,直到在a中找不到和b相同的子串 为止。

数据结构中的串

if(pos>=0) { n=StrLength(S); m=StrLength(T); i=pos; while ( i<=n-m ) { SubString( sub,S,i,m );//返回S中从i起长度为m的子串 if( SubCompare (sub,T)!= 0 ) i++; else return i; } // while
StrCompare(S, T) : 若S>T 返回>0;若S=T 返回=0;若
S<T 返回<0;
StrLength( S ) :串S存在,返回S中元素的个数,称为串
的长度
more
串的基本操作
Concat( &T, S1,S2 ) : 用T返回S1和S2联接而成的新串 SubString( &Sub,S,pos,len ) : 用Sub返回串S的第pos个
▪ 两个串之间可以进行比较。 ▪ 称两个串相等,当且仅当这两个串的值相等,包括
两个串的长度相等,并且各个对应位置的字符都相 等。
▪ 当两个串不相等时,可按“字典顺序”分大小。令
s= “s0s1…sm-1” (m>0) t= “t0t1…tn-1” (n>0) ▪ 假设,两者最大有前k个子序列相等(最大相等前缀子
▪ 串中任意个连续的字符组成的子序列称为该串的子串。包含 子串的的串相应地称为主串。通常称字符在序列中的序列号 为该字符在串中的位置。子串在主串中的位置则以子串第0 个字符在主串的位置来表示。
4.1 串的定义和操作
▪ 例如:下面a,b,c,d都是串
▪ a=“BEI”
长度为3
▪ b=“JING”
长度为4
44
第4章 串
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
串的存储结构——静态存储 静态存储 串的存储结构
静态存储结构(顺序存储方式) 静态存储结构(顺序存储方式):用 一组地址连续的存储单元存储串值 的字符序列.
18
串的存储结构——静态存储(续) 静态存储( 串的存储结构 静态存储
(1)非紧缩格式: 1 非紧缩格式: 这种方式是以一个 存储单元为单位, 存储单元为单位, 每个存储单元仅存 放一个字符. 放一个字符. 紧缩格式: (2)紧缩格式:一 个字节存储一个字 符.这种存储方式 可以在一个存储单 元中存放多个字符, 元中存放多个字符, 充分地利用了存储 空间. 空间.
串的长度: 串的长度:串中字符的数目n称为串的长度.
零个字符的串为空串,它的长度为零. 例如: s1='I have a dog'; s2='have';s3='dog' 则它们的长度分别为12,4,3
4
串的概念
子串和主串: 子串和主串:串中任意个连续的字 符组成的序列称为该串的子串. 包含子串的串相应地称为主串.
第四章 串
[内容提要 内容提要] 内容提要 ⒋1 串的概念 ⒋2 串的存储结构 ⒋3 串基本操作的实现 ----文本编辑 ⒋4 串的应用举例----文本编辑 串的应用举例----
串与线性表的区别 串与线性表的
1,对象:串的数据对象约束为字符集. 对象:串的数据对象约束为字符集. 操作: 2,操作: 在线性表的基本操作中,大多以" 在线性表的基本操作中,大多以"单个 元素"作为操作对象. 元素"作为操作对象. 在串的基本操作中,通常以"串的整体" 在串的基本操作中,通常以"串的整体" 作为操作对象. 作为操作对象.
11
串的基本操作定义
⑷ 联接函数: 联接函数:Concat(s,t) 和串t的联接是把t 串s和串t的联接是把t的字符序 列紧接在s 列紧接在s的字符序列之后构成一个新 的字符序列,从而产生一个新的串, 的字符序列,从而产生一个新的串, 作为函数值返回. 作为函数值返回. 例如,如果s= hand',t='work', s=' 例如,如果s='hand',t='work',则 Concat(s,t)的返回值为新串 Concat(s,t)的返回值为新串 'handword'. 'handwo
length stadr
store
...
This is a string !
未分配的存储空间
...
free
maxsize
26
串的存储映象
符号表stridx[maxsize] a b c d 3 5 0 8 1 4 9 9 B A 串值存储空间store[maxsize] E N I G J A I I N G S H
H
free=17 length stadr
27
算法4.2
串基本操作的实现——串联接 串联接 串基本操作的实现
s.cu rlen -1 t.cu rlen -1
s l
l.cu rlen -1
t
m ax len -1
(a)
s.cu rlen -1 t.cu rlen -1
s l
t
t中 被 截 去 的 部 分 l.cu rlen -1 m ax len -1 t.cu rlen -1
(b )
s.cu rlen -1
s l
l.cu rlen -1
t
t中 字 符 被 全 部 截 去 m ax len -1
(c)
28
串基本操作的实现——求子串 求子串 串基本操作的实现
算法4.3
int SubStr(strtp sub,strtp s, int start,int len) /*求子串函数将s串中从第start (位序号)个字符开始长度为len 的字符序列复制到sub中.注意: 函数中的start 在有些书上表示 位序号,而另一些书上表示下标, 但位序号=下标+1.*/
8
串的基本操作定义
假设本节中的s,t,v,a,b,c和d都是串名, 并且a,b,c和d的值分别为'BEI', 'JING',''和'BEIJING'. ⑴ 赋值操作:Assign(s,t)和Create(s,ss) 其中t为串名,ss为字符序列.Create(s,ss) 的操作结果为设定了一个串s,其值为字符序 列ss;Assign(s,t)的操作结果是将t的值赋 给s.例如, 执行Assign(s,d)的操作之后, s的值为'BEIJING'
例如: s1='I have a dog';s2='have';s3='dog'
则:串s3是s1的子串, s1是s3的主串; 的主串; 是 的主串
串s2不是 的子串 不是s1的子串 不是
5
串的概念
串的位置: 串的位置:字符在序列中的序号为 该字符在串中的位置.子串在主 串中的位置则以子串的第一个字 符在主串中的位置来表示.特别 地,空串是任意串的子串,任意 串是其自身的子串. 例如: s1='I have a dog'; s3='dog' 则:子串s3在s1中的位置为10
12
串的基本操作定义
求子串函数: ⑸ 求子串函数: SubStr(s,start,len) 若 1≤start≤length(s)+1 且 0≤len≤length(s)0≤len≤length(s)-start+1 则返回 函数值为从串s中第start个字符起, start个字符起 函数值为从串s中第start个字符起,长 度为len连续的字符序列; len连续的字符序列 度为len连续的字符序列;否则返回一 个特殊的串常量. 个特殊的串常量. 例如, SubStr(d,1,3)返回新串 'BEI', 例如, SubStr(d,1,3)返回新串 'BEI', SubStr(d,4,0)返回空串 ''. SubStr(d,4,0)返回空串 ''.
30
串基本操作的实现 串的模式匹配( 串的模式匹配 求子串位置) 第一趟:——串的模式匹配(求子串位置)
13
串的基本操作定义
⑹ 定位函数: 定位函数:Index(s,t) 定位 若在主串s中存在和t相等的子 若在主串s 中存在和t 则函数值为s 串 , 则函数值为 s 中第一个这样的子 串有主串s中的位置, 串有主串 s 中的位置 , 否则函数值为 注意:在此t不能是空串. 零.注意:在此t不能是空串. 例如,Index(d,b)返回子串位置 例如,Index(d,b)返回子串位置 4, Index(d,c)返回函数值 Index(d,c)返回函数值 0.
23
结点结构
尾指针指示链 表中的最后一 个结点
串的动态存储结构 ——块链存储的存储密度
.我们把存储单元利用率定义为存储密度:
串值所占的存储位 存储密度=———————— 实际分配的存储位 当用块链存储串值时,虽然由于链表结构比较灵 活,使串长不受限制,但同样受到存储密度的制约, 而且使串的操作复杂化,存在着结点大小取多大较 合适的问题.
21
串的动态存储结构 ——块链存储的定义
用单链表存放串, 用单链表存放串 , 每个结点存放 多个字符,称为块链结构. 多个字符,称为块链结构.结点大小 为4的链表图示: 的链表图示:
22
串的动态存储结构 ——块链存储的类型定义
#define CHUNKSIZE <用户定义的结点大小>; typedef struct chunk { char ch[CHUNKSIZE]; struct chunk *next; }chunk typedef struct { chunk *head,*tail; int } length; 串的长度
2
串的定义
串是一组由字符组成的有限序列, 是一组由字符组成的有限序列, 一般记为: 一般记为: S='c1 c2 ' (n≥0)
串的概念
串的值: 串的值:用成对的单引号括起来的字符序
列是串的值.(成对的单引号本身仅是 串值的标记,不包含在串值中.在C语言 中,s1='a'与s2=〃a〃两者是不同的, s1表示字符,而s2表示字符串.
14
串的基本操作定义
替换操作: ⑺ 替换操作:Replace(s,t,v) 操作结果是以串v 操作结果是以串 v 替换所有在 中出现的和非空串t 串 s 中出现的和非空串 t 相等的不重叠 的子串. 的子串. 例如, s='bbabbabba', t='ab', 例如 , 设 s='bbabbabba' , t='ab' , v='c', Replace(s,t,v)的操作结果 v='c',则Replace(s,t,v)的操作结果 s='bbcbcba'. 为s='bbcbcba'.
6
串的概念
两个串相等: 两个串相等:当两个串的长度相等, 并且各个对应位置的字符都相等时 才相等. 例如:
s1='I have a dog';s2='have';s3='dog' ; s4='dog'
则:串s1,s2,s3都是互不相等,但s3与 s4相等.
7
串的概念
空格串:由一个或多个空格组成 的串称为空格串(请注意:此处 不是空串)它的长度不为0.如 ' '是空格串长度为2. 空串:不含任何字符的串,它的 长度为0,为了清楚起见,以后 我们用符号''来表示空串.
相关文档
最新文档