js最长回文字符串

 /*  eg:babad --->aba (情况一)     cbbd --->bb  cabbad---->abba(情况2)  abababab
    思路:字符串最小长度为3  ab 
      情况一:遍历字符串的每个字符,把每个字符当中心点向左右扩散,判断两边字符是否相等 (有中心)
      情况二: 遍历查找连续相同的字符串,左右扩散 (没有中心)
  */
  var longeset =function (s){
      if(s.length<2){
        return s;
      }
      let start =0;
      let maxLength=1;
      function expand(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(let i=0;i<s.length;i++){
        expand(i-1,i+1)
        expand(i,i+1)
      }
      return s.substring(start,start+maxLength)
  }
posted @ 2022-06-16 23:52  残星落影  阅读(148)  评论(0)    收藏  举报