1. 程式人生 > >Cpp的簡單程式設計題

Cpp的簡單程式設計題

1.

這裡需要說明下,什麼是c++裡面的建構函式、拷貝建構函式,賦值函式。

建構函式:

c++物件的構造,即作業系統給該物件分配對應的資源空間,建構函式有預設的,由編譯器產生,也可以由使用者自定義產生,使用者可以自定義普通建構函式,也可以定義拷貝的建構函式。

拷貝建構函式:

屬於建構函式的一種,但是是由使用者定義在兩個相同物件拷貝時發生,一般呼叫可能有兩個方式:直接初始化進行建構函式的匹配,匹配到拷貝建構函式;另外一個就是拷貝初始化,兩種方式如下:

賦值函式:

其實是過載的一部分,完成兩個相同物件之間的賦值,不發生在初始化時候。

2.

這一題暴力破解的話,時間複雜度就是O(m*n),很明顯這樣不是考查者出這個題目的目的。

那麼如何解決這個匹配的問題呢???——KMP字串匹配演算法,該演算法的時間複雜度可以降到線性的O(m+n)

難點就是去建立一個next陣列,沒有匹配的情況去查詢next陣列,將匹配的字串一次多滑動視窗,程式碼如下 :