【力扣】409.最长回文串|每日一题|刷题打卡

72 阅读1分钟

一、题目描述

给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。

在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。

 

示例 1:

输入: s = "abccccdd"
输出: 7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

示例 2:

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

示例 3:

输入: s = "aaaaaccc"
输出: 7

 

提示:

  • 1 <= s.length <= 2000
  • s 只由小写 和/或 大写英文字母组成

二、思路分析

  1. 判断字符出现的次数,如果不存在,则添加至obj中,如果存在,则count += 2 表示2次,成对出现
  2. 如果最后当count小于s.length的长度时,表示还能添加一个

三、代码答案

/**
 * @param {string} s
 * @return {number}
 */
var longestPalindrome = function (s) {
  const obj = {}
  let count = 0
  for (var i = 0; i < s.length; i++) {
    if (!obj[s[i]]) { 
      obj[s[i]] = 1
    } else {
      count += 2
      delete obj[s[i]]
    }
  }
  if (s.length > count) {
    count += 1
  }
  return count
};