LeetCode 5 最長回文子串

2021-09-24 07:29:13 字數 1232 閱讀 3658

暴力破解法

選出所有子字串可能的開始和結束位置,並檢驗它是不是回文,時間複雜度為o(n^3),空間複雜度為o(1)

var longestpalindrome = function (s) 

let result = s[0];//1個字元也是回文子串

for(let i=0; ifor(let j=i+1; jlet str = s.slice(i, j);

let restr = str.split('').reverse().join('');

if(str == restr)}}

return result;

};複製**

動態規劃

var longestpalindrome = function (s) 

//只有乙個字串的時候是回文

for(i=0; ifor(l = 2; l<=len; l++)

//當前判斷的字元長度不為2

//s[i] == s[j]判斷第乙個字串和第二個字串是否相同

//dp[i+1][j-1] == 1判斷相關子串是否回文

//當前字串長度為l,則需要判斷字串長度為l-2,首字元index為i+1,尾字元index為j-1的子串是否為回文

else

if(s[i] == s[j] && dp[i+1][j-1] == 1)}}

return result;

}複製**

emm不知道什麼演算法

大概的想法就是先把字串變成長度為奇數,在字元間加上#,然後以每乙個字元為中心,向左右擴散判斷是否是回文子串

var longestpalindrome = function (s) 

s = s.split('').join('#');

var len = s.length;

var result = s[len - 1];

while (i < len) else

if(next - pre + 1 == result.length && s[i] == '#')

}i++;

}return result.split('#').join('');

};複製**

馬拉車

LeetCode5最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 動態規劃來做,每個回文字串的子字串也是回文字串,即string是回文字串那麼它的string.substring 1,lenth ...

LeetCode 5 最長回文子串

問題描述 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 解決方案 中心擴充套件演算法 事實上,只需使用恆定的空間,我們就可以在 o n 2 的時間內解決這個問題...

leetcode5 最長回文子串

遞推式 1 一般 s i 1 s j 1 and j i and j i len s i 1,j 1 2 初始化dp矩陣對角線的值為 true,相鄰兩個元素相等時dp i i 1 為true 初始化回文串起始位置和長度。def longestpalindrome s n len s if s ret...