409.最长连续序列(javascript)409.LongestPalindrome

原创
小哥 3年前 (2022-11-10) 阅读数 5 #大杂烩

leetcode题目: https://leetcode-cn.com/problems/longest-palindrome/

给定包含大小写字母的字符串 s ,返回 由这些字母构成 最长的返回字符串 。

施工期间,请注意 区分大小写 。比如 “Aa” 它不能用作返回字符串。

Given a string s which consists of lowercase or uppercase letters, return the length of the longest palindrome that can be built with those letters.

Letters are case sensitive, for example, “Aa” is not considered a palindrome here.

示例 1:

输入:s = "abccccdd"
输出:7
解释:
我们可以构造的最长的返回字符串是"dccaccd", 其长度为 7。

示例 2:

输入:s = "a"
输入:1

示例 3:

输入:s = "bb"
输入: 2

Example 1:

Input: s = "abccccdd"
Output: 7
Explanation:
One longest palindrome that can be built is "dccaccd", whose length is 7.

Example 2:

Input: s = "a"
Output: 1

Example 3:

Input: s = "bb"
Output: 2

步骤1:存储字符串的每一项和相应的数字。map
第二步:把所有的奇数都输入。Math.floor(value / 2) * 2,取下偶数,同时将其加到和中。

为了 获得 最长的返回字符串 ,如果长度小于字符串的长度,则可以添加一个。此操作可以在中间添加一些额外的数字

var longestPalindrome = function (s) {
    let h = new Map()
    let slen = s.length
    for (let i = 0; i < slen; i++) {
        if (!h.has(s[i])) {
            h.set(s[i], 1)
        } else {
            h.set(s[i], h.get(s[i]) + 1)
        }
    }
    let result = 0
    for (let value of h.values()) {
        result += Math.floor(value / 2) * 2
    }
    return result < slen ? result + 1 : result
};

var longestPalindrome = function (s) {
    let h = new Map()
    let slen = s.length
    for (let i = 0; i < slen; i++) {
        h.set(s[i], (h.has(s[i]) ? h.get(s[i]) : 0) + 1)//本节旨在优化上述代码。
    }
    let result = 0
    for (let value of h.values()) {
        result += Math.floor(value / 2) * 2
    }
    return result < slen ? result + 1 : result
};
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除