以前也碰到过类似的题,用的是字符相加后基类排序的方法,现在用暴力破解法发现简单多了
循环i从左边,j从右边开始,不停的判断i到j是否回文字符,如果是,那么当前i位置就是最长的
循环i,找出 s 中最长的回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/** * @param {string} s * @return {string} */ var longestPalindrome = function(s) { let maxLen=1; let maxI=0; for(let i=0;i<s.length-1;i++){ //从右边开始找 for(let j=s.length-1;j>i;j--){ if(s[i]===s[j]){ const len=j-i+1; let d=(len>>1)-1; while(d>0&&s[i+d]===s[j-d]){ d-- } //如果是回文字符 if(d===0){ if(len>maxLen){ maxLen=len maxI=i; } break; } } } } console.log(maxI,maxLen) return s.substr(maxI,maxLen) };
标签:子串,中等,len,maxLen,maxI,let,回文 From: https://www.cnblogs.com/caoke/p/16747178.html