Longest Palindrome

Given a string find the longest substring palindrome.

vector<char> LongestPalindrome(vector<chararr)
{
    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<chararrunsigned 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;
}