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 意味著 可以代...