資料結構 串

2021-10-01 12:45:30 字數 1509 閱讀 1269

1. 串是由零個或多個字串組成的有限序列,又叫字串;

2. 一般記為:s=「a1a2a3…an」(n>=0)。

其中s為串的名稱,雙引號中的字串行為串值,ai[1,n],i是該字元在串中的位置,n為串長

3. 其他概念

(1)空格串:只包含空格的串。區別於空串,它是有長度的,而且可以有多個空格

(2)子串與主串:串中任意個數的連續字元組成的子串行稱為該主串的子串

1. 串的比較通過組成串的字元之間的編碼來進行的,而字元的編碼指該字元對應字符集的序號

2. 比較兩個串是否相等,要比較其長度和對應位編碼號是否相等。

3. 不相等字串比較大小:

兩個字串,如果乙個串是另乙個字串的子串,則子串小於主串;如果從第i位開始不相等,則比較第i位的編碼值,編碼值大的串大。

例項應用:英語詞典

1. 順序儲存結構

用一組位址連續的儲存單元來儲存字串行,一般用定長陣列來定義

2.鏈式儲存結構

(1)與線性表相似,但每個節點存放1/多個字元。

對於單節點多字元,最後乙個節點若未被佔滿則用預設值補全,所以節點儲存字元長度影響著串處理效率,需要根據實際情況做出選擇。

(2)效能評價:串的鏈式儲存結構除了在連線串與串操作時方便外,總體效能不如順序儲存好

0.將一字串與目標字串比較,看其是否是目標串的子串,並確定匹配位置

1. 普通/暴力匹配演算法

從第一位開始匹配,出錯後子串整體後移一位,效率極低

2.kmp演算法

(1)實現步驟:

(2)**:

public

class

stringkmp

int j =0;

int[

] n =

next

(sub)

;for

(int i =

0; i < str.

length()

; i++)if

(str.

charat

(i)== sub.

charat

(j))

if(sub.

length()

== j)

}return-1

;}/** * 用於生成部分匹配表

* * @param sub

* @return

*/private

static int[

]next

(string sub)

if(sub.

charat

(i)== sub.

charat

(x))

n[i]

= x;

}return n;

}public

static

void

main

(string[

] args)

}

資料結構 串

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。結果請按字母順序輸出。我們求整個字串的排列,可以看成兩步 首先求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。第...

資料結構 串

串名 串值 串長 空串 空格串。字串的比較 字串模式匹配演算法 1.簡單字串模式匹配演算法 最簡單實現是用字串p的字元依次與字串t中的字元進行比較。實現思想是,首先將子串p從第0個字元起與主串t的第pos個字元起依次比較對應字元,如全部對應相等,則表明已找到匹配,成功終止。否則將子串p從第0個子串起...

資料結構 串

串 又稱字串 是一種特殊的線性表,它的每個結點僅由乙個字元組成。在早期的程式語言中,串僅在輸入或輸出中以直接量的形式出現,並不參與運算。隨著計算機的發展,串在文字編輯 詞法掃瞄 符號處理以及定理證明等許多領域得到越來越廣泛的應用。在高階語言中開始引入了串變數的概念,如同整型 實型變數一樣,串變數也可...