-
上個月終於把棧和隊列專題完成了,其實從開始到現在,我們主要學到的東西其實就是數組與鏈表的各種變種。那么這個月開始,我們輕松點,學習些別的東西。那么開啟新的專題:串。
早先的計算機在被發明時,主要作用是做一些科學和工程的計算工作,也就是現在我們理解的計算器,只不過它比小小計算器功能更強大、速度更快一些。后來發現,在計算機上作非數值處理的工作越來越多,使得我們不得不需要引入對字符的處理。於是就有了字符串的概念。
比如我們現在常用的搜索引擎,當我們在文本框中輸入“簡明 現代"時,它已經把我們想要的“簡明現代魔法”列在下面了(聯想詞)。顯然這里網站作了一個字符串査找匹配的工作:

今天我們就是來研究“串”這樣的數據結構。先來看定義。
串(string)是由零個或多個宇符組成的有限序列,又名叫字符串。
一般記為s = "a,a2……an" (n>0),其中,s是串的名稱,用雙引號(有些書中也用單引號)括起來的字符序列是串的值,注意單引號不屬於串的內容。ai(1<= i<= n)可以是字母、數字或其他字符,i就是該字符在串中的位置。串中的字符數目n稱為串的長度,定義中談到“有限”是指長度n是一個有限的數值。零個字符的串稱為空串(null string),它的長度為零,可以直接用兩雙引號一表示,也可以用希臘Φ字母來表示。所謂的序列,說明串的相鄰字符之間具有前驅和后繼的關系。
一些特別的字符串
還有一些概念需要解釋。
空格串,是只包含空格的串。注意它與空串的區別,空格串是有內容有長度的,而且可以不止一個空格。
子串與主串,串中任意個數的連續字符組成的子序列稱為該串的子串,相應地,包含子串的串稱為主串。
子串在主串中的位置就是子串的第一個字符在主串中的序號。
-
比如在英語單詞中,即使是friend也有個end,即使是believe也有個lie。
這里的"end", "lie"其實可以認為是"friend"、"believe"這些單詞字符串的子串。
比起前面說到的鏈表,串簡單吧?先難后易,是一種很好的學習方法。
延伸閱讀
此文章所在專題列表如下: