function longestPalindromeSubstring(s) {
if (s.length <= 1) return s; // If string length is 0 or 1, it's already a palindrome
let start = 0, maxLength = 0;
// Helper function to expand around the center and find the longest palindrome
function expandAroundCenter(left, right) {
while (left >= 0 && right < s.length && s[left] === s[right]) {
left--;
right++;
}
// Return the length of the palindrome
return right - left - 1;
}
for (let i = 0; i < s.length; i++) {
// Check for odd-length palindrome
let len1 = expandAroundCenter(i, i);
// Check for even-length palindrome
let len2 = expandAroundCenter(i, i + 1);
// Find the maximum palindrome length
let len = Math.max(len1, len2);
if (len > maxLength) {
maxLength = len;
start = i - Math.floor((len - 1) / 2);
}
}
// Return the longest palindromic substring
return s.substring(start, start + maxLength);
}
console.log(longestPalindromeSubstring("qabcbaproggorpxyyxzv"));
console.log(longestPalindromeSubstring("abcdedcbaqabcbaproggorpxyyxzv"));
/*
run:
proggorp
abcdedcba
*/