国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PTA 7-1 字符串模式匹配(KMP)

這篇具有很好參考價(jià)值的文章主要介紹了PTA 7-1 字符串模式匹配(KMP)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

給定一個(gè)字符串 text 和一個(gè)模式串 pattern,求 pattern 在text 中的出現(xiàn)次數(shù)。text 和 pattern 中的字符均為英語大寫字母或小寫字母。text中不同位置出現(xiàn)的pattern 可重疊。

輸入格式:

輸入共兩行,分別是字符串text 和模式串pattern。

輸出格式:

輸出一個(gè)整數(shù),表示 pattern 在 text 中的出現(xiàn)次數(shù)。

輸入樣例1:

zyzyzyz
zyz

輸出樣例1:

3

輸入樣例2:

AABAACAADAABAABA
AABA

輸出樣例2:

3

數(shù)據(jù)范圍與提示:

1≤text, pattern 的長(zhǎng)度 ≤106, text、pattern 僅包含大小寫字母。

#include<stdio.h>
char t[1000001],p[1000001];
int next[1000001],con=0;
int lt=0,lp=0;
void get_next(){
	int i=-1,j=0;
	next[0]=-1;//這里由于一般下標(biāo)從1開始但為了簡(jiǎn)便下標(biāo)從零開始但賦值為-1
	while(j<lp){
		if(i==-1||p[j]==p[i]){
			i++;
			j++;
			next[j]=i;//第一次next[1]=0符合公式
		}
		else i=next[i];
	}
}
void kmp(){
	int i=0,j=0;
	while(i<lt){
 //并不是找第一次出現(xiàn)while條件減少主串完即可
		if(j==-1||t[i]==p[j]){
			i++;
			j++;
		}
		else j=next[j];
		if(j==lp)
		{
		    con++;
        }
	}
}
int main(){
	while((t[lt]=getchar())!='\n')lt++;
	while((p[lp]=getchar())!='\n')lp++;//這里運(yùn)行時(shí)間pta測(cè)試卡的很死,不要用stelen和scanf或gets輸入數(shù)據(jù)
	get_next();
	kmp();
	printf("%d",con);
	return 0;
}

詳細(xì)思想?yún)⒖?span id="n5n3t3z" class="link-card-box">【July】從頭到尾徹底理解KMP - 阿津 - 博客園 (cnblogs.com)https://www.cnblogs.com/JoBlg/p/4087230.html文章來源地址http://www.zghlxwxcb.cn/news/detail-737314.html

到了這里,關(guān)于PTA 7-1 字符串模式匹配(KMP)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【kmp算法】字符串匹配

    kmp算法解決的是字符串匹配的問題,具體來說假定我們要在主串s[ ] 中匹配模式串p[ ],找到匹配到的位置loc; 最自然的想法是暴力寫法 (BF)枚舉主串字符s[ i ] ,和模式串p[ j ]。一個(gè)一個(gè)匹配,如果匹配失敗,i指針回退回起點(diǎn),往前進(jìn)一位,再次進(jìn)行比較,知道匹配成功。

    2024年02月04日
    瀏覽(31)
  • 字符串匹配算法(BF&&KMP)

    字符串匹配算法(BF&&KMP)

    個(gè)人主頁:平行線也會(huì)相交 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 平行線也會(huì)相交 原創(chuàng) 收錄于專欄【數(shù)據(jù)結(jié)構(gòu)初階(C實(shí)現(xiàn))】 在學(xué)習(xí)這個(gè)算法之前,我們先來看看什么時(shí)字符串匹配算法,簡(jiǎn)單來說 有一個(gè)主串和一個(gè)子串,查找子串在主串的位置,然后返回這個(gè)位置

    2023年04月17日
    瀏覽(18)
  • P3375 【模板】KMP 字符串匹配

    P3375 【模板】KMP 字符串匹配

    給出兩個(gè)字符串 s 1 s_1 s 1 ? 和 s 2 s_2 s 2 ? ,若 s 1 s_1 s 1 ? 的區(qū)間 [ l , r ] [l, r] [ l , r ] 子串與 s 2 s_2 s 2 ? 完全相同,則稱 s 2 s_2 s 2 ? 在 s 1 s_1 s 1 ? 中出現(xiàn)了,其出現(xiàn)位置為 l l l 。 現(xiàn)在請(qǐng)你求出 s 2 s_2 s 2 ? 在 s 1 s_1 s 1 ? 中所有出現(xiàn)的位置。 定義一個(gè)字符串 s s s 的

    2024年02月14日
    瀏覽(30)
  • 【leetcode 力扣刷題】字符串匹配之經(jīng)典的KMP?。?!

    【leetcode 力扣刷題】字符串匹配之經(jīng)典的KMP?。?!

    以下是能用KMP求解的算法題,KMP是用于字符串匹配的經(jīng)典算法【至今沒學(xué)懂………啊啊啊】 題目鏈接:28. 找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo) 題目?jī)?nèi)容: 題意還是很好理解的,要在字符串haystack中查找一個(gè)完整的needle,即字符串匹配。 暴力求解就是用 兩層循環(huán) :haystack從第

    2024年02月09日
    瀏覽(33)
  • 數(shù)據(jù)結(jié)構(gòu)--字符串的KMP算法

    數(shù)據(jù)結(jié)構(gòu)--字符串的KMP算法

    樸素模式匹配算法: 一旦發(fā)現(xiàn)當(dāng)前這個(gè)子串中某個(gè)字符不匹配,就只能轉(zhuǎn)而匹配下一個(gè)子串(從頭開始) 但我們可以知道: 不匹配的字符之前,一定是和模式串一致的 color{red}不匹配的字符之前,一定是和模式串一致的 不匹配的字符之前,一定是和模式串一致的 我們可以利用

    2024年02月12日
    瀏覽(16)
  • Leetcode的AC指南 —— 字符串/KMP:28.找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)

    摘要: Leetcode的AC指南 —— 字符串/KMP:28.找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo) 。題目介紹:給你兩個(gè)字符串 haystack 和 needle ,請(qǐng)你在 haystack 字符串中找出 needle 字符串的第一個(gè)匹配項(xiàng)的下標(biāo)(下標(biāo)從 0 開始)。如果 needle 不是 haystack 的一部分,則返回 -1 。 題目介紹 :給你兩

    2024年02月02日
    瀏覽(28)
  • KMP-重復(fù)子字符串

    Problem: 459. 重復(fù)的子字符串 給定一個(gè)字符串str1, 判斷其是否由重復(fù)的子串構(gòu)成。 例子1:輸入 str1=‘a(chǎn)babab’ ;輸出 true 例子2:輸入 str1=‘a(chǎn)babac’ ;輸出 false 重復(fù)子字符串組成的字符串,其肯定存在一個(gè)后綴和前綴是一樣的,并且這個(gè)后綴其由后綴前面的字符子串組成。所以

    2024年01月25日
    瀏覽(59)
  • ACM - 字符串 - 基礎(chǔ)(KMP)

    ACM - 字符串 - 基礎(chǔ)(KMP)

    題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 題目大意 找出子串第一次出現(xiàn)的位置,找不到輸出 - 1. next 數(shù)組的含義: next [ i ] 表示 :以 i 為終點(diǎn),以 1 為起點(diǎn),前后綴能一致的最長(zhǎng)字串。 (在某些頭文件有命名過next,所以代碼里面以 ne 代表next) next [ i ] = x 表示:如果

    2024年02月04日
    瀏覽(18)
  • 【數(shù)據(jù)結(jié)構(gòu)】樸素模式匹配 & KMP算法

    【數(shù)據(jù)結(jié)構(gòu)】樸素模式匹配 & KMP算法

    ?? 自在飛花輕似夢(mèng),無邊絲雨細(xì)如愁 ?? ? ?? 正式開始學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)啦~此專欄作為學(xué)習(xí)過程中的記錄 ?? 子串的定位操作通常稱為串的模式匹配,它求的是模式串在主串中的位置,而樸素模式匹配就是一種不斷移動(dòng)主串指針,每一次都和模式串依次進(jìn)行比較的暴力求解方法

    2024年02月16日
    瀏覽(26)
  • LeetCode:459. 重復(fù)的子字符串 —【2、KMP算法】

    LeetCode:459. 重復(fù)的子字符串 —【2、KMP算法】

    ??道阻且長(zhǎng),行則將至。?? ??算法,不如說它是一種思考方式?? 算法專欄: ????123 題目描述 :給定一個(gè)非空的字符串 s ,檢查是否可以通過由它的一個(gè)子串重復(fù)多次構(gòu)成。 來源:力扣(LeetCode) 難度: 簡(jiǎn)單 提示: 1 = s.length = 104 s 由小寫英文字母組成 示例 1: 輸入:

    2024年02月04日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包