美文网首页
5. Longest Palindromic Substring

5. Longest Palindromic Substring

作者: 最尾一名 | 来源:发表于2018-05-31 15:35 被阅读0次

题目描述

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba"也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

JS解法

从头至尾遍历字符串,找其最长子串O(n^2)。

/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
  if (s.length < 2) return s;
  let minStart = 0, maxLen = 1;
  let curIndex = 0;
  while (curIndex < s.length) {
    if (s.length - curIndex < maxLen / 2) break;
    let j = k = curIndex;
    while (k < s.length - 1 && s[k+1] === s[k]) ++k; // Skip duplicate characters.
    curIndex = k + 1;
    while (k < s.length - 1 && j > 0 && s[k+1] === s[j-1]) {
      ++k;
      --j;
    }
    let newLen = k - j + 1;
    if (newLen > maxLen) {
      minStart = j;
      maxLen = newLen;
    }
  }
  return s.substr(minStart, maxLen);
};

相关文章

网友评论

      本文标题:5. Longest Palindromic Substring

      本文链接:https://www.haomeiwen.com/subject/bebqsftx.html