~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
開發工具與關鍵技術:資料結構與演算法
作者:李宥良
撰寫時間:2020年5月28日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
串是字串的簡稱。在資料結構中,串是一種在資料元素的組成上具有一定約束條件的線性表,即要求組成線性表的所有資料元素都是字符,所以說串是一個有窮的字符序列。
串是由零個或多個字符組成的有限序列,記作s=”s0s1…sn-1”(n≥0),其中s是串名,字符個數n稱作串的長度,雙撇號括起來的字符序列”s0s1…sn-1”是串的值。每個字符可以是字母、數字或任何其它的符號。零個字符的串(即:””)稱為空串,空串不包含任何字符。值得注意的是:
(1)長度為1的空格串" "不等同于空串"";
(2)值為單個字符的字串不等同于單個字符,如"a"與′a′;
(3)串值不包含雙撇號,雙撇號是串的定界符。
串中任意個連續的字符組成的子序列稱為該串的子串。包含子串的串則稱為主串。通常將字符在串中的序號稱為該字符在串中的位置。子串在主串鐘的位置則以該子串在主串中的第一個字符位置來表示。為了讓大家更好的理解子串,舉個簡單的例子說明。如:
s="I am from Canada.";
s1="am.";
s2="am";
s3="I am";
s4="I am ";
s5="I am";
s2、s3、s4、s5都是s的子串,或者說s是s2、s3、s4、s5的主串,而s1不是s的子串。s3等于s5,s2不等于s4。s的長度是17,s3的長度是4,s4的長度是5。
串的基本演算法在串的應用中廣泛使用,這些基本演算法不僅加深了對串的理解,更簡化了日后對串的應用。下面還是通過舉例介紹串的常用基本演算法。
假設有以下串:s1="I am a student",s2="teacher",s3="student",常用的串的基本運算有下列幾種:
(1)Assign(s,t),將t的值賦給s。
(2)Assign(s4,s3)或Assign(s4,"student")后,s4="student"。
(3)Length(s),求s的長度。
(4)Length(s1)=14,Length(s3)=7。
(5)Equal(s,t),判斷s與t是否相等。
(6)Equal(s2,s3)=false,Equal("student",s3)=true。
(7)Concat(s,t),將t連接到s的末尾。如:Concat(s3, " number")= "student number"。
(8)Substr(s,i,len),求子串。如:Substr(s1,7,7)= “student”,Substr(s1,10,0)= “”, Substr(s1,0,14)= "I am a student"。
(9)Insert(s,i,t),在s的第i個位置之前插入串t。 Insert(s3,0,"good_")后,s3="good_student"。
(10)Delete(s,i,len),洗掉子串。ss=“good_student”,Delete (ss,0,5)后,ss="student"。
(11)Replace(s,u,v),子串替換,即將s中的子串u替換為串v。 Replace(s1,s3,s2)后,s1=“I am a teacher”,Replace(s1,“worker”,s2)后s1的值不變。 若ss=“abcbcbc”,則:Replace(ss,“cbc”,“x”)后,ss="abxbc",Replace(ss,"cb","z")后,ss="abzzc"。
(12)index(s,t),子串定位,即求子串t在主串s中的位置。 index(s1,s3)=7,index(s1,s2)=-1,index(s1, "I")=0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/49828.html
標籤:非技術區
上一篇:QT開發的QT工程管理小工具
下一篇:u盤重裝完系統就這個樣子了
