Leetcode talk17最長回文子串

2021-10-04 01:50:24 字數 2388 閱讀 5379

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。

示例 1:

輸入:

"babad"

輸出:"bab"

注意:"aba" 也是乙個有效答案。

示例 2:

輸入:

"cbbd"

輸出:"bb"

思路:

三種思路:

思路 1:

把每個字母當成回文串的中心

這裡要考慮兩種情況,回文串的長度為奇數或者偶數情況。

思路 2: 把每個字母當成回文串的結束

思路 3: 動態規劃

dp[j][i] 表示字串從 j 到 i 是否是為回文串,即當 s[j] == s[i] 如果 dp[j+1][i-1] 也是回文串,那麼字串從 j 到 i 也是回文串,即 dp[j][i] 為真。

**:

方法一:

class solution:

def longestpalindrome

(self, s: str)

-> str:

n =len(s)

self.res =

"" def helper

(i,j)

: while i >=

0 and j < n and s[i]

== s[j]

: i -=

1 j +=1if

len(self.res)

< j - i -1:

self.res = s[i+

1:j]

for i in range

(n):

helper

(i,i)

helper

(i,i+1)

return self.res

方法二:

class solution:

def longestpalindrome

(self, s: str)

-> str:

if not s:

return

"" max_len =

1 n =

len(s)

start =

0for i in range(1

,n):

even = s[i-max_len:i+1]

odd = s[i - max_len-

1:i+1]

#print

(even,odd)

if i - max_len -

1>=

0 and odd == odd[::

-1]:

start = i - max_len -

1 max_len +=

2 elif i - max_len >=

0 and even == even[::

-1]:

start = i - max_len

max_len +=

1

#print

(start,max_len)

return s[start: start+max_len]

方法三:

class solution:

def longestpalindrome

(self, s: str)

-> str:

if not s :

return

"" res =

"" n =

len(s)

dp =[[

0]* n for

_ in range

(n)]

max_len =

float

("-inf"

)for i in range

(n):

for j in range

(i +1)

:if s[i]

== s[j] and (i - j <

2 or dp[j +1]

[i -1]

):dp[j]

[i]=

1if dp[j]

[i] and max_len < i +

1- j:

res = s[j : i +1]

max_len = i +

1- j

return res

IT人才最容易犯的17個錯誤

記得剛參加工作時 那是97年 中國的it剛剛興起,那時,作為乙個it人士是一件很光榮的事,而那時的我正在做電氣和電子相關的工作。99年第一次跳槽,進入了it行業做軟體開發。至今,中國的it已經走過了十多年。但昔日的 光榮一員 卻成為了現在的 it農民工 這究竟是怎麼了?是中國的it發展已經很好了所造...

HASHMAP JDK1 7 最詳細原理分析(二)

昨天的部落格我解釋了hashmap jdk1.7 在put的時候會發生衝突,而解決衝突的方式就是使用鍊錶,那麼我們假設hashmap儲存結構如下圖 那麼節點1和節點2組成了乙個鍊錶,那麼現在如果再來put乙個節點3,假設節點3也需要插在這個鍊錶中,我們考慮鍊錶的插入效率,將節點3插在鍊錶的頭部是最快...

Ubuntu 11 04下最流行的17款應用

ad 1,chromium web browser 無需多論。安裝 安裝 安裝 4,cheese webcam booth給自己照張相,加上效果。早上起來做鏡子,以此為鏡,可以知髮型 安裝 5,audacity錄音,編輯音訊檔案 安裝 安裝 7,skype打打 與親友保持通訊,告訴他們,我是乙個幸福...