最长回文子串
给定一个字符串 s
,找到 s
中最长的回文子串。
function longestPalindrome(s) { if(s.length == 0){ return s } let palindrome = s[0] for(let i = 0;i < s.length -1;i++){ let item = s[i] let substr = item for(let j = i+1;j < s.length;j++){ let jItem = s[j] substr += jItem if(substr.length == 2 && jItem == item && substr.length > palindrome.length){ palindrome = substr }else{ if(substr == substr.split('').reverse().join('') && substr.length > palindrome.length ){ palindrome = substr } } } } return palindrome }
时间复杂度O(n2),Leecode提交未通过,超过时间限制。
利用指针
const longestPalindrome = (str = 'cccabcdcbaa') => { const getStr = (s, l, r) => { while(l > -1 && r < s.length && s[l] === s[r]){ l-- r++ } return s.substring(l + 1, r) } let res = '' for(let i = 0; i < str.length; i++){ const s1 = getStr(str, i, i) const s2 = getStr(str, i, i + 1) res = res.length > s1.length ? res : s1 res = res.length > s2.length ? res: s2 } return res }
以自己现在的努力程度,还没有资格和别人拼天赋