最长回文子串
给定一个字符串 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
}
以自己现在的努力程度,还没有资格和别人拼天赋

浙公网安备 33010602011771号