给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd” 输出: “bb”
暴力循环, 分两种情况 1、rabcbake,奇数回文 abcba 2、rabbarkf,偶数回文 rabbar
遍历的时候,分别向两边观察开,如果不等则判断是否比目前的最长回文子字符长,长则替代。
/** * @param {string} s * @return {string} */ var longestPalindrome = function(s) { if(s.length<2){ return s } let str = '' let maxstr = '' for(let i = 0;i<s.length;i++){ //为奇数时 str = s[i]; str = fn(s,i-1,i+1,str) if(str.length> maxstr.length){ maxstr = str } //为偶数时 str = ''; str = fn(s,i,i+1,str) if(str.length> maxstr.length){ maxstr = str } } return maxstr }; //每个字符向外观察,获取该字符为中心的最长回文子字符串 var fn = function(s,left,right,str){ while(s[left]!=undefined&&s[right]!=undefined&&s[left]==s[right]){ str = s.slice(left,right+1) left--; right++; } return str }发现自己的代码通过的时候效率还可以加强些,不过思路是这样的,哈哈,先凑活凑活。看了别人的代码,感觉应该是fn函数中str要频繁