036 · Longest Palindrome

algorithm
Published

June 12, 2026

Problem

给定一个字符串 s

请返回:用 s 里的字符可以构造出的最长回文串的长度。

这里的“回文串”指的是:从左往右读和从右往左读都一样的字符串。

注意,只需要返回最长长度,不需要真的把这个回文串构造出来。s 中的每个字符最多只能使用一次。

例如:

s = "abccccdd"

可以用其中一些字符构造出:

"dccaccd"

这个字符串从左往右和从右往左读都一样,长度是:

7

所以答案是 7

大小写字符是不同的。比如 "A""a" 不是同一个字符。

Examples

示例 1

Input:  s = "abccccdd"
Output: 7

解释:可以构造出长度为 7 的回文串,例如 "dccaccd"

示例 2

Input:  s = "a"
Output: 1

解释:只有一个字符时,它本身就是一个长度为 1 的回文串。

示例 3

Input:  s = "Aa"
Output: 1

解释:"A""a" 是不同字符,不能当作一对使用,所以最长只能取其中一个字符。

Constraints

  • \(1 \leq\) s.length \(\leq 2000\)
  • s 只由小写和大写英文字母组成