LeetCode每日刷题2-5. 最长回文子串

研究很久才明白回文字串是什么:

是指从左往右,从右往左读起来一样的字符串。

题目:

给你一个字符串 s,找到 s 中最长的回文子串。

示例1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例2:

输入:s = "cbbd"
输出:"bb"

示例3:

输入:s = "a"
输出:"a"

示例4:

输入:s = "ac"
输出:"a"

考虑到类似“abba”这种中心为两个字符的字符串需要用helpfunction遍历两次

var longestPalindrome = function(s) {
//最大回文字符串最小为1
let maxLength = 1;
//起始点为0
let start = 0;
function expandAroundCenter(left,right){
   //三种情况都满足才进行循环
   while(left >= 0 && right <= s.length && s[left]===s[right]){
   //判断是否要更新最大回文字符数
   if(right - left + 1> maxLength){
   maxLength = right - left + 1;
   start = left; 
}
  //向左和右不断遍历判断
   left--;
   right++;
}
}
  //循环判定两次不同状况的字符串是否有回文字符
for(i=0;i<s.length;i++){
   expandAroundCenter(i-1,i+1);
   expandAroundCenter(i,i+1);
}
   return s.substring(start,start+maxLength);
};

 

posted @ 2021-04-26 20:47  ❀Camelia  阅读(44)  评论(0)    收藏  举报