Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

    Example 1:

    1. Input: "babad"
    2. Output: "bab"
    3. Note: "aba" is also a valid answer.

    Example 2:

    Input: "cbbd"
    Output: "bb"
    
    /**
     * @param {string} s
     * @return {string}
     */
    var longestPalindrome = function(s) {
        let result = '';
        let start;
        let end;
        outer:
        for (let mid = 0; mid < s.length; mid += 0.5) {
            for (let i = Math.floor(mid), j = Math.round(mid); i >= 0, j <= 2 * mid; i--, j++) {
                if (s[i] !== s[j]) {
                    break;
                }
                start = i;
                end = j;
            }
            let len = end - start + 1;
            if (len > result.length) {
                result = s.substring(start, end + 1);
            }
        }
        return result;
    };
    
    /**
     * @param {string} s
     * @return {string}
     */
    var longestPalindrome = function(s) {
        const size = s.length;
        if (size < 2) {
            return s;
        }
        let start = 0;
        let end = 0;
        let i;
        let j;
        const checkPalindrome = function(mid1, mid2) {
            i = mid1;
            j = mid2;
            for (; i >= 0, j < size; i--, j++) {
                if (s[i] !== s[j]) {
                    break;
                }
            }
            if ((j - i - 1) > (end - start)) {
                start = i + 1;
                end = j - 1;
            }
        }
        for (let mid = 0; mid < size - 1; mid++) {
            checkPalindrome(mid, mid);
            if (s[mid] === s[mid + 1]) {
                checkPalindrome(mid, mid + 1);
            }
        }
        return s.substring(start, end + 1);
    };