Given a string find the longest substring palindrome.vector<char> LongestPalindrome(vector<char> arr)
{
vector<char> curr;
vector<char> ret;
for (int i = 0; i < arr.size(); i++)
{
curr = PalindromeFromMid(arr, i);
if (curr.size() > ret.size())
ret = curr;
}
return ret;
}
vector<char> PalindromeFromMid(vector<char> arr, unsigned int mid)
{
vector<char> ret;
if (mid >= arr.size() - 1)
return ret;
// Set both left and right index to mid
int l = mid;
int r = mid;
// Move the right index out as long as the mid character is repeating
while (arr[l] == arr[r+1])
r++;
while (l > 0 && r < arr.size() && arr[l] == arr[r])
{
l--;
r++;
}
for (int i = l + 1; i < r; i++)
ret.push_back(arr[i]);
return ret;
} |