Leetcode 409. Longest Palindrome javascript

347 阅读1分钟
/**
 * @param {string} s
 * @return {number}
 */
var longestPalindrome = function(s) {
    let str = s.split('');
    str.sort((a, b) => a.charCodeAt() - b.charCodeAt());
    let strs = str.reduce((list, ele, index) => {
        if(!list.length){
            list.push({
                value: ele,
                length: 1,
            });
        }
        else if(ele === list[list.length - 1].value){
            list[list.length - 1].length++;
        }
        else{
            list.push({
                value: ele,
                length: 1,
            });
        }
        return list;
    }, []);
    strs.sort((b, a) => a.length - b.length);
    let hasOdd = false;
    let maxLength = strs.reduce((sum, ele, index) => {
        sum += ele.length
        if(ele.length % 2 !== 0){
            hasOdd = true;
            sum -= 1;
        }
        return sum;
    }, 0);
    return maxLength + (hasOdd ? 1 : 0);
};