牛客字串KMP訓練題 可愛即正義

2021-09-25 19:58:11 字數 964 閱讀 1812

一開始的時候怎麼也想不明白,根本就不知道時間複雜度怎麼優化,後來在左神左學長的指點下,發現了字串的模式串是給定的,並且其無法在其本身上找到一段與其本身匹配的地方,也就是說,沒有辦法在母串上找到多個相互交錯的模式串

接下來就簡單了,分別討論母串上找到的模式串有times個的情況

當times>2時,無解了,想想就明白

當times==2時,交換找到的兩個的位置的第乙個、第二個字元,一定不會換出來模式串,想想就可以明白的

當times==1時,從第乙個開始找乙個字元與找到的模式串的位置首位相交換,再判斷即可

當times==0時,隨便交換兩個並判斷是否會再找到模式串即可

但是這個時間複雜度可能會很大,注意減少匹配的次數

**:

#include

#define ll long long

const

int maxn=

1e6+7;

using namespace std;

int l1,l2,times=0;

int nxt[maxn]

,pos[maxn]

;char str[maxn]

,st[maxn]=;

void

getnxt()

}void

kmp()}

intmain()

else

if(times==2)

else

if(times==1)

else

swap

(str[i]

,str[j]);

}}printf

("no\n");

}else

else

swap

(str[i]

,str[j]);

}}printf

("no\n");

}return0;

}

牛客18984 可愛即正義 KMP

可愛即正義 kmp二星水題 傳送門 小可愛是個可愛的女孩子 nzdl 眾所周知,小可愛在物競初賽時候有兩道大題沒有做出來,所以,可愛的小可愛 qwq 便沉浸在了毒瘤之中 無法接受在任何地方看到 suqingnianloveskirito 這個東西。然而,這時候從sd某處送來了一封安慰信 情書 信的內...

牛客字串KMP訓練題 慄醬的數列

這道題就是一道kmp模板題,但是有幾個小地方要處理下 首先我們來看看題面 傳送門 也就是說滿足 a2 b2 a1 b1 k 0 化簡之後就是 a2 a1 k b2 b1 k k 0 即 a i a i 1 k b i b i 1 k k 0 得到這個結論以後就可以用kmp的原理進行了 想清楚後就是一...

牛客 倒置字串

經過函式後變為 beijing.like i 輸入描述 每個測試輸入包含1個測試用例 i like beijing.輸入用例長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 1.先把字串整體倒轉 反轉前 i like beijing.反轉後1 gnijied ekil i 2.把字元傳...