日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Manacher 算法模板

發(fā)布時(shí)間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Manacher 算法模板 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡介

  • 在字符串的題目中,有時(shí)會(huì)遇上 回文串 這樣一個(gè)名詞

  • 顧名思義,回文串 就是 正讀和反讀都一樣的字符串

  • 最長回文子串 ,就是在一個(gè)字符串的所有子串中,是回文串且長度最長的那個(gè)

  • 求最長回文子串最普通的方法是 O(N2) ,即枚舉一個(gè)點(diǎn)往兩邊擴(kuò)展

  • 但是在有些題目中,N 卻十分的大

  • 那么我們就要用到 時(shí)間空間復(fù)雜度都是 O(N)Manacher 算法

用法

  • 在處理回文串時(shí),我們常常會(huì)被 中間字符是一個(gè)還是兩個(gè) 這樣的問題困擾

  • 但是在機(jī)智的 Manacher 算法 中,這個(gè)問題得到了完美的解決

  • 在每兩個(gè)字符中間插入一個(gè)不會(huì)出現(xiàn)的分隔符(如:#)

  • 之后在頭尾插入一個(gè)還是沒有出現(xiàn)的分隔符(如:*)來防止 While 出界

  • 這樣處理起來就方便很多了!

  • 設(shè)讀入的字符串為 s[i]

  • 記錄 p[i] 表示 以 s[i] 為中心往兩邊擴(kuò)展的最大長度

  • 觀察可知,實(shí)際的回文串長度即為當(dāng)前的 p[i]?1

  • 再記錄一個(gè)數(shù) idp[id]+id表示在 i 位置前所有回文串中能延伸到的最右端的位置

  • 如下圖:

  • 算法核心就是:

  • if(p[id]+id>i) p[i]=min(p[id?2?i],p[id]+id?i); else p[i]=1;

  • 當(dāng)之前所有回文串中能延伸到的最右端覆蓋過 i 時(shí),則取最小值,否則 p[i]=1 ,及自己本身

  • 這樣不斷維護(hù) p[i]id ,就能在 O(N) 內(nèi)求出 最長回文子串 了!

  • 至于為什么時(shí)間是線性的,由于最有端 p[id]+id 最多只能移動(dòng) N 次,

  • 有效移動(dòng)的操作就嚴(yán)格線性啦!!

  • 下面附上模板:

void Manacher() {scanf("%s",s);int len=strlen(s);for(int i=len;i>=0;i--){int k=i*2+1;s[k+1]=s[i],s[k]='#';}//插入分隔符len*=2;s[ans=id=0]='*';for(int i=2;i<=len;i++){if(p[id]+id>i) p[i]=min(p[id*2-i],p[id]+id-i); else p[i]=1;while(s[i-p[i]]==s[i+p[i]]) p[i]++;if(p[i]+i>p[id]+id) id=i;if(p[i]>ans) ans=p[i];}//處理、計(jì)算 }
  • 注釋:s[i]p[i]id 如題意義,ans 表示 最長回文子串 的長度,而 len 是原串長度

總結(jié)

  • 這個(gè) Manacher 算法效率極高,時(shí)間空間都是 O(N) 線性的

  • 再者代碼極短,所以使用起來十分方便,應(yīng)多多使用!!!

總結(jié)

以上是生活随笔為你收集整理的Manacher 算法模板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av动漫免费看 | 久久人人妻人人人人妻性色av | 国产精品乱码一区 | 男人天堂社区 | 婷婷综合亚洲 | 免费视频亚洲 | www.av在线播放 | 国产裸体网站 | 国产你懂 | 亚洲综合在线一区 | 亚州av免费 | 女人张开腿让男人桶爽 | 亚洲免费在线观看视频 | 亚洲欧美日韩国产一区 | 在线观看视频一区二区 | 非洲黑妞xxxxhd精品 | 中文无码av一区二区三区 | 男男全肉变态重口高h | 就要操就要日 | 四虎在线网址 | 驯服少爷漫画免费观看下拉式漫画 | 日韩图片一区 | 很嫩很紧直喷白浆h | 插插网站 | 久久超碰精品 | 国语对白久久 | 欧美日韩在线观看免费 | 亚洲国产精品久久精品怡红院 | 香蕉国产999 | √资源天堂中文在线视频 | 全部孕妇毛片 | 日韩在线精品强乱中文字幕 | 亲嘴扒胸摸屁股免费视频日本网站 | 奇米精品一区二区三区四区 | 国产不卡在线观看视频 | 岛国片免费在线观看 | 国产黄色高清视频 | 欧美日韩成人一区二区 | 制服丝袜先锋影音 | 亚洲一区二区三区在线播放 | 伊人一区二区三区 | 可以看污的网站 | 亚洲av无码一区二区三区在线观看 | 少妇做爰xxxⅹ性视频 | 亚洲AV无码成人精品区东京热 | 精品一区二区无码 | 日韩精品xxx | 日日操夜夜操天天操 | 黄色免费视屏 | 国产又粗又黄视频 | 婷婷六月综合 | 99福利影院| 精品+无码+在线观看 | 男人天堂1024| 精产国产伦理一二三区 | 一区二区伦理 | 国产一区二区三区四区五区 | 三级国产视频 | 亚洲精品一区二区三区区别 | 国产精品熟女视频 | 福利片在线播放 | 天天射天天色天天干 | 亚洲高清在线观看 | 国产精品国产自产拍高清av | 日韩精品成人在线观看 | 精品国产黄色片 | 欧美日韩视频一区二区三区 | 中文字幕一区二区人妻在线不卡 | 五月在线视频 | 六月婷婷在线观看 | 午夜高清视频 | aa在线视频 | 亚洲精品中文字幕在线播放 | 亚洲综合激情网 | 少妇毛片 | 成人免费区一区二区三区 | heyzo国产 | 国产精品探花一区二区三区 | 成人久久视频 | 久久机热这里只有精品 | 一级片在线免费观看视频 | 又黄又爽无遮挡 | 欧美激情婷婷 | 四虎视频国产精品免费入口 | 曰本无码人妻丰满熟妇啪啪 | 欧美一区二区视频在线观看 | 日本伦理中文字幕 | 黄网在线免费观看 | 亚洲AV无码国产精品 | 国产欧美日韩精品在线观看 | 丰满少妇一区二区 | 亚洲福利视频网站 | 依依成人综合 | 国产永久av | 91偷拍精品一区二区三区 | 少妇一级淫片免费放 | 伊人中文字幕 | 国产精品久久久久久久久夜色 | 久久久久亚洲精品系列色欲 |