题目链接
英文链接:https://leetcode.com/problems/longest-palindrome/
中文链接:https://leetcode-cn.com/problems/longest-palindrome/
题目详述
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa"
不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
示例 1:
1 | 输入: |
题目详解
- 统计每个字符出现的次数。
- 如果次数是偶数,可以全部用来组成回文串;如果是奇数,则只能运用次数减一个字符。
- 存在奇数则最后还可以额外放一个字符在中间组成回文串。
1 | public class LeetCode_00409 { |
- 由于只存在大写字母和小写字母,我们可以用一个数组替代
HashMap
进行统计。 - 可以直接数出现次数奇数的个数,不存在说明所有字符都可用,结果就是原字符串的长度。
- 若存在奇数结果为原字符串的长度减去奇数个数后加一。
1 | public class LeetCode_00409 { |