/** * @param {string} s * @return {string} */ var longestPalindrome = function(s) { if (!s || s.length === 0) return ''; let start = 0, end = 0; for (let i = 0; i < s.length; i++) { // There can be 2n - 1 centers for the palindromes. We can // include each character and the space in between the // characters. let l1 = expandAroundCenters(s, i, i); let l2 = expandAroundCenters(s, i, i + 1); let l = Math.max(l1, l2); if (l > end - start) { start = i - Math.floor((l - 1) / 2); end = i + Math.floor(l / 2); } } return s.substring(start, end + 1); }; var expandAroundCenters = function(s, left, right) { while (left >= 0 && right < s.length && s.charAt(left) === s.charAt(right)) { left--; right++; } return right - left - 1; } // Time Complexity O(n ^ 2) // Space Complexity O(1)
Categories