欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

使用python怎么實(shí)現(xiàn)一個(gè)最長回文串算法-創(chuàng)新互聯(lián)

使用python怎么實(shí)現(xiàn)一個(gè)最長回文串算法?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

為西峰等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及西峰網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、西峰網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

1 . i 關(guān)于 j 對(duì)稱的字符i'的影響范圍完全包含在j的影響范圍內(nèi),則由于回文性,i 的影響范圍大于等于i'的影響范圍,即f[i]>=f[i']

2. i 關(guān)于 j 對(duì)稱的字符i'的影響范圍不完全包含在j的影響范圍內(nèi),此時(shí)i的右側(cè)影響范圍大于等于[j-f[j]/2,i'],即i+f[i]/2>=i'-j+f[j]/2

由于對(duì)稱性,可得i+i" = 2*j。因此第一種情況下,f[i]>=f[2*j-i];第二種情況下,f[i]>=f[j]+2*j-2*i。

綜上1,2,可得f[i]>=min(f[2*j-i],f[j]+2*j-2*i)。由于i右邊存在未遍歷的字符,因此在此基礎(chǔ)上,繼續(xù)向兩邊擴(kuò)展,直到找到最長的回文子串。

若i依然在j+f[j]/2后面,則表示i沒有被前面的字符的影響,只能逐一的向兩邊擴(kuò)展。

這個(gè)算法由于只需遍歷一遍字符串,擴(kuò)展的次數(shù)也是有限的,所以時(shí)間復(fù)雜度可以達(dá)到O(N)。

下面是Pthon3的程序,為了檢測算法的效率,依然提供最初的暴力枚舉算法作為最壞算法的參照。

python代碼:

#求最長回文串類 
class LPS:      
 #初始化,需要提供一個(gè)字符串 
 def __init__(self,string): 
  self.string = string 
  self.lens = len(self.string) 
  
 #暴力枚舉:作為算法效率參照 
 def brute_force(self): 
  maxcount = 0 
  for j in range(self.lens):      
   for k in range(j,self.lens): 
    count = 0 
    l,m = j,k 
    while m>=l: 
     if self.string[l]==self.string[m]: 
      l,m = l+1,m-1 
     else: 
      break 
    if m<l: 
     count = k-j+1 
    if count>maxcount : 
     maxcount = count 
  return maxcount 
  
 #優(yōu)化版:枚舉子串中心 
 def brute_force_opti(self): 
  maxcount = 0 
  if self.lens == 1:        #只有一個(gè)字符直接返回1 
   return 1 
  for j in range(self.lens-1):     #枚舉中心 
   count,u = 1,j 
   #對(duì)于奇數(shù)子串,直接擴(kuò)展 
   for k in range(1,j+1):      #兩邊擴(kuò)展 
    l,m = u+k,j-k 
    if (m>=0)&(l<self.lens): 
     if(self.string[l]==self.string[m]): 
      count += 2 
     else: 
      break 
   if count>maxcount :       #更新回文子串最長長度 
    maxcount = count 
   if self.string[j]==self.string[j+1]:  #處理偶數(shù)子串,將兩個(gè)相鄰相同元素作為整體 
    u,count= j+1,2 
   for k in range(1,j+1):      #兩邊擴(kuò)展 
    l,m = u+k,j-k 
    if (m>=0)&(l<self.lens): 
     if(self.string[l]==self.string[m]): 
      count += 2 
     else: 
      break 
   if count>maxcount :       #更新回文子串最長長度 
    maxcount = count 
  return maxcount 
   
 #manacher算法 
 def manacher(self): 
  s = '#'+'#'.join(self.string)+'#'    #字符串處理,用特殊字符隔離字符串,方便處理偶數(shù)子串 
  lens = len(s) 
  f = []           #輔助列表:f[i]表示i作中心的最長回文子串的長度 
  maxj = 0          #記錄對(duì)i右邊影響大的字符位置j 
  maxl = 0          #記錄j影響范圍的右邊界 
  maxd = 0          #記錄最長的回文子串長度 
  for i in range(lens):       #遍歷字符串 
   if maxl>i:         
    count = min(maxl-i,int(f[2*maxj-i]/2)+1)#這里為了方便后續(xù)計(jì)算使用count,其表示當(dāng)前字符到其影響范圍的右邊界的距離 
   else :          
    count = 1 
   while i-count>=0 and i+count<lens and s[i-count]==s[i+count]:#兩邊擴(kuò)展 
    count +=1 
   if(i-1+count)>maxl:       #更新影響范圍大的字符j及其右邊界 
     maxl,maxj = i-1+count,i               
   f.append(count*2-1) 
   maxd = max(maxd,f[i])      #更新回文子串最長長度 
  return int((maxd+1)/2)-1      #去除特殊字符

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

本文標(biāo)題:使用python怎么實(shí)現(xiàn)一個(gè)最長回文串算法-創(chuàng)新互聯(lián)
本文URL:http://www.aaarwkj.com/article42/coighc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站設(shè)計(jì)、ChatGPT商城網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
成人性生交大片免费看久久| 开心五月婷婷六月丁香| 日韩视频精品推荐一区二区| 97精品久久九九中文字幕| 国产原创av剧情在线播放| 在线播放精品免费不卡| 国产精品久久久久精品三级下载| 国产福利精品一区二区av | 欧美日韩三级性生活水平| 久久av一区二区三区.| 麻豆精品国产一区二区91| 久久久亚洲成人国产av| 情侣自拍偷拍亚洲天堂区| 人妻操人人妻中出av| 欧美精品一区二区三区乱码| 亚洲精品中文字幕乱码| 日本欧美自拍偷拍高清| 欧美劲爆三级免费观看| 在线看片国产精品自拍| 91久久一区二区秋霞免费| 亚洲性码不卡视频在线| 日韩激情小视频在线观看| 色噜噜人妻av中文字幕| 国产男女免费操作视频| 精品色欧美色国产一区国产| 日韩一区二区高清看片| 亚洲av日韩专区在线观看| 久久免费国产精品电影| 无毛亚洲视频在线观看| 久久国产精品亚洲看片| 免费观看亚洲视频一区二区三区| 亚洲伊人成综合人影院| 国产成人精品手机在线观看| 少妇被又粗又硬猛烈进视频| 久久久久久精品国产免费| 欧美亚洲午夜一二综合| 国产一区二区精品小视频| 男女啪啪国产精品视频| 欧美亚洲成人免费电影| 亚洲精品天堂av免费看| 中文字幕五月婷婷免费|