給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。
示例一:通過substring劃分子串,遍歷所有可能結果。輸入:「babad「
輸出:」bab「
注意:」aba「也是乙個有效答案
示例二:
輸入:」cbbd「
輸出:「bb」
結果效率太低
**如圖
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 ...