6 2 模式匹配 10分

2021-10-24 14:46:30 字數 912 閱讀 3053

6-2 模式匹配 (10分)

給出主串s和模式串t,其長度均不超過1000。本題要求實現乙個函式bf(string s, string t),求出模式串t在主串s中第一次出現的位置(從0開始計算),如果在s中找不到t,則輸出-1。

函式介面定義:

/* s為主串,t為模式串。

裁判測試程式樣例:

#include

using namespace std;

/* s為主串,t為模式串。

int main(int argc, char const *ar**)

/* 請在這裡填寫答案 */

輸入樣例1:

this is a test string

is輸出樣例1:

2輸入樣例2:

this is a test string

the輸出樣例2:

-1

/* s為主串,t為模式串。

* 函式返回t在s中第一次出現的位置。

*/vector<

int>

getnext

(const string&str)

if(str[i]

==str[j+1]

)next[i]

=j;}

return next;

}int

kmp(

const string&strone,

const string&strtwo)

if(strone[i]

==strtwo[j+1]

)j++;if

(j==strtwo.

size()

-1)}

return-1

;}intbf

(string s, string t)

6 2 統計專業人數 10分

本題要求實現乙個函式,統計學生學號鍊錶中專業為計算機的學生人數。鍊錶結點定義如下 struct listnode 這裡學生的學號共7位數字,其中第2 3位是專業編號。計算機專業的編號為02。函式介面定義 int countcs struct listnode head 其中head是使用者傳入的學生...

6 2 遞迴求階乘和(10 分)

本題要求實現乙個計算非負整數階乘的簡單函式,並利用該函式求 1 2 3 n 的值。函式介面定義 double fact int n double factsum int n 函式fact應返回n的階乘,建議用遞迴實現。函式factsum應返回 1 2 n 的值。題目保證輸入輸出在雙精度範圍內。輸入樣...

leetcode 10 模式匹配

可以用動態規劃來做,dp i j 表示s的前i個字串能否被p的前j個字串所匹配。當s i p j p j 時 dp i j dp i 1 j 1 顯而易見 p j 時,1.s i p j 1 這就意味著此時 只能匹配0次 dp i j dp i j 2 2.s i s i p j 1 意味著 可以代...