暴力破解法
選出所有子字串可能的開始和結束位置,並檢驗它是不是回文,時間複雜度為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...