回文是指一个字符串不论从左往右看还是从右往左看都是一样的
那么就会有两种状况:1.复数回文,2.单数回文

双指针解法

利用两个指针,指针内的字符串就是匹配到的回文字符串
function longestPalindrome(str) {  // 最终后果  let result = "";  for (let index = 0; index < str.length; index++) {    // 回文核心是复数(本人)时,即复数回文    findRepeat(index, index);    // 回文核心是单数时,即单数回文    findRepeat(index, index + 1);  }  // 匹配传入指针对应的最大回文字符串  function findRepeat(leftIndex, rightIndex) {    while (      leftIndex >= 0 &&      rightIndex < str.length &&      str[rightIndex] === str[leftIndex]    ) {      leftIndex--;      rightIndex++;    }    // 这里要留神:下面的 while 循环会在条件不成立时终止,所以 leftIndex 的最终值 多减了 1, rightIndex 的最终值 多加了 1    // slice 左闭右开的个性, leftIndex 又多减了1 所以 leftIndex 要 + 1解决,rightIndex 要 - 1解决,而 rightIndex 自身就多加了 1 所以互相对消    const replaceStr = str.slice(leftIndex + 1, rightIndex);    if (result.length < replaceStr.length) {      result = replaceStr;    }  }  return result;}
本文由一文多发经营工具平台 EaseWriting 公布