資料結構與演算法(串)

2021-10-01 06:01:54 字數 1209 閱讀 8100

引言:在上次佇列學習後,現在我們再學習串。主要包含kmp演算法,現在就開始資料結構與演算法的——串的學習。

定義:串是由零個或者多個字元組成的有限序列,又叫字串。

串的大部分操作我們曾經都實現過,這裡重點介紹kmp演算法。

樸素模式匹配演算法是我們最容易思考到的一種普通演算法,其時間複雜度可以認為是o(n*n)的,現在我們來看一下**。

返回匹配成功之後的首位址,否則返回-1。

#include

#include

using

namespace std;

int******

(char

*s,char

*p)else}if

(j>=lp)

return i-lp;

else

return-1

;}intmain()

這種方式在很長的字串中的情況下是很慢的,所以我們需要考慮快的方法。

在三位科學家的努力下,kmp誕生了,其時間複雜度降至o(n+m),這大大提高了我們的匹配速度。

現在我們來看下**。返回匹配成功之後的首位址,否則返回-1

#include

#include

using

namespace std;

int next[

255]

;//定義next陣列

void

buildnext

(char

*pp,

int*n)

}int

kmp(

char

*s,char

*p)else

if(j>0)

j=next[j-1]

+1;else

i++;}

if(j>=lp)

return i-lp;

else

return-1

;}intmain()

這次的串操作基本就結束了,其中的思想在以後的文章中會補全,我們將繼續往下學習

資料結構與演算法 串(基礎)

上上週學習了串的部分知識,今天得空將其中的一些點整理下來。資料結構中,字串要單獨用一種儲存結構來儲存,稱為串儲存結構。這裡的串指的就是字串。嚴格意義上講,串儲存結構也是一種線性儲存結構,因為字串中的字元之間也具有 一對一 的邏輯關係。只不過,與之前所學的線性儲存結構不同,串結構只用於儲存字元型別的資...

資料結構與演算法 4 串

字串簡稱串,是一種特殊的線性表,它的資料元素僅由乙個字元組成。串 string 是由零個或多個字元組成的有限序列 s a 1a 2 cdots a n 因為串是資料元素型別為字元型的線性表,所以用於線性表的儲存方式仍適合與串。但是由於串中的資料元素是單個位元組,其儲存方式又有其特殊之處。類似於線性表...

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...