牛客演算法周周練18B 救救企鵝(kmp模板題)

2021-10-23 10:33:23 字數 1537 閱讀 3815

給出三個串 a b c,你的任務是從a中找到所有子串和b相等的串並替換為c串,輸出替換後的字串。

kmp模板題,套用kmp的板子,每次找b串,然後用sting.replace()換掉即可,如果找不到則退出迴圈。

/*kmp*/

#pragma gcc optimize(2)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int n =

1e6+50;

const

int inf =

0x3f3f3f3f

;int nextval[n]

;string s, a, b;

void

get_next()

//求next陣列

else k = nextval[k]

;//類似遞迴的去找公共前字尾}}

intkmp()

//模板

else j = nextval[j];}

if(j == plen)

return i - j;

return-1

;}intmain()

cout << s << endl;

return0;

}

這道題還有stl做法,就是find和replace交替使用也可以ac。**如下:

/*stl做法*/

#pragma gcc optimize(2)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int n =

250;

const

int inf =

0x3f3f3f3f

;int

main()

cout << s << endl;

return0;

}

牛客演算法周周練2

a 題意 求乙個數的順序和逆序之和。題解 其實就是個閹割版的高精度加法嘛。其實逆序數忽略前導零這個條件是沒有用的,因為順序數不可能有前導零,自然結果也不會有,然後注意下首位進製不取餘。include using namespace std int a 10 b 10 intmain for k j ...

牛客演算法周周練2

題目鏈結 include define sc x scanf lld x define pf printf define rep i,s,e for int i s i e i define dep i,e,s for int i e i s i using namespace std typede...

牛客演算法周周練3

只寫了乙個,打遊戲去了 就是個搜尋模板,直接寫就行 include include include include include include using namespace std define mid 1000000007 typedef long long ll int book 106 ...