题目描述
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串的长度。
区分大小写。
思路
参考自:https://leetcode-cn.com/problems/longest-palindrome/solution/javade-2chong-shi-xian-fang-fa-by-sweetiee/
使用长度为 58 的整型数组来统计每个字符出现的个数:
- 每个字符有偶数个可以用来构成回文字符串;
- 因为回文字符串最中间的那个字符可以单独出现, 所以如果有单独的字符就把它放到最中间。
代码
偶数的二进制末尾为 0, &1 的话结果为 0;
奇数的二进制末尾为 1,&1 的话结果为 1。
长度为 58 的数组的由来:(26个大写字母)+ (26个小写字母)+ (ASCII表中,大写字母 Z 和小写字母 a 之间有 6 个特殊字符) = 58.
A 65
Z 90
a 97