kmp 字串的問題

2021-10-23 13:51:59 字數 821 閱讀 8604

有乙個字串 讓你找到這個字串 s 裡面的子串t 這個子串 t 必須滿足即使這個串的字首 也是這個

串的字尾 並且 在字串中也出現過一次的(提示 要求滿足前字尾的同時也要在字串**現一次 只是前字尾可不行 輸出最長滿足要求字串)

給出乙個字串 長度 1 到 1e6 全部是小寫字母

如果找的到就輸出這個子串t 如果不行就輸出 just a legend

輸入fixprefixsuffix

輸出fix

輸入abcdabc

輸出just a legend

#include

using

namespace std;

string s;

int nxt[

1000005

],vis[

1000005];

void

getnext

(string p)

else}}

intmain()

int ans=nxt[len]

;while

(ans)

return0;

} ans=nxt[ans];}

cout<<

"just a legend"

}

#include

using

namespace std;

intmain()

} cout<<

"just a legend"

}

字串匹配問題 KMP演算法

kmp演算法 kmp是解字串匹配這類題目的演算法,又稱 看毛片 演算法。如下圖,給定乙個長度為n的文字,給定乙個長度為m 的字串,求該字串在給定文字的中出現的次數。kmp就是解決這一類題目的。i 1 zzkzzzkzzzkzkkkz zzkzzkzzkzzk j 1繼續考慮上面的問題。首先我相信每個...

字串匹配問題 KMP演算法

字串匹配問題 給定兩個字串s 主串 和t 模式串 假設n strlen s strlen t m,判斷主串s中是否包含模式t,且返回t在s中所在的起始位置。這裡為簡單起見,若s包含t,則只返回第乙個t所在的位置。一般的蠻力法如下 蠻力法在遇到不匹配時,j每次都要回到t的起點,從新開始匹配,這樣來看效...

KMP演算法 字串匹配問題

給定倆個字串str和match,長度分別為n和m。實現乙個演算法,如果字串str中含有字串match,則返回match在str中的開始位置,不含有則返回 1 str acbc match bc 返回2.str acbc match bcc 返回 1.我們知道在match中a區域與b區域是匹配的,所以...