leetcode練習 最長回文子串

2021-09-26 14:50:24 字數 2409 閱讀 1998

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

示例一:

輸入:「babad「

輸出:」bab「

注意:」aba「也是乙個有效答案

示例二:

輸入:」cbbd「

輸出:「bb」

通過substring劃分子串,遍歷所有可能結果。

結果效率太低

**如圖

class

solution}}

return b;

}public

boolean

ishws

(string s)

return

true;}

}

public string longestpalindrome

(string s)}}

return

newstring

(cs,begin,maxlen)

;}

最後僅僅通過90個通過測試用例 效率太低

這個是我第一次自己嘗試修改問題**

通過在leetcode中摸索大佬的思想我嘗試修改了一下**

class

solution

}return b;

}}

總結

主要目的就是去掉一些重複的判斷

我們知道a[j][k]的情況我們便知道下一位的情況

勉強通過 本題對我來說有點難度 不過總算通過

本次打卡失敗 整頓整頓下次再戰

在群裡看了大家都是用中心法進行的

關注了回文的對稱性

回文對稱中心的兩邊是相等的

python版

def

longestpalindrome

(s):

size =

len(s)

if size <2:

return s

dp =[[

false

for _ in

range

(size)

]for _ in

range

(size)

] max_len =

1 start =

0for i in

range

(size)

: dp[i]

[i]=

true

for j in

range(1

, size)

:for i in

range(0

, j)

:if s[i]

== s[j]

:if j - i <3:

dp[i]

[j]=

true

else

: dp[i]

[j]= dp[i +1]

[j -1]

else

: dp[i]

[j]=

false

if dp[i]

[j]:

cur_len = j - i +

1if cur_len > max_len:

max_len = cur_len

start = i

return s[start:start + max_len]

def

longestpalindrome

(str):

iflen

(str

)<2:

return

str'#'

+'#'

.join(

str)

+'#'

max_length =

0for i in

range

(len):

left = i-

1 right = i+

1 step =

0while left >=

0and right <=

(len-1

):left -=

1 right +=

1 step +=

1if step > max_length:

max_length = step

start =

(i - max_length)//2

return

str[start: start + max_length]

練習10 最長回文子串(LeetCode)

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 首先我直接採用了最暴力的解法,從頭到尾依次比較,時間複雜度為o n 3 如下 string longestpal...

LeetCode練習 5 最長回文子串

leetcode從三月到現在做了也大概有10 的題了,值是一直沒有記錄,做了忘忘了做,效率比較低。剛好昨天看到同學的部落格,把他做的題都記錄下來了 甚至還畫圖了 我也做一下吧。先放題 示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 這是...

最長回文子串 LeetCode 五 最長回文子串

題目 最長回文子串 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。題目解析 回文?當回文串長度為奇數時,比如 北京計程車租出京北 當回文串長度為偶數的時候,比如 1221 以上兩種情況有乙個共同的特點就是有乙個中心,那在 中如何表示中心呢?class solution ...