给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa"
不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
示例 1:
输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
class Solution:
def longestPalindrome(self, s: str) -> int:
res = [0] * 128
for ch in s:
res[ord(ch)] += 1
odd_cnt, n = 0, len(s)
for e in res:
odd_cnt += (e % 2)
return n if odd_cnt == 0 else n - odd_cnt + 1
class Solution {
public int longestPalindrome(String s) {
int[] res = new int[128];
int n = s.length();
for (int i = 0; i < n; ++i) {
res[s.charAt(i)]++;
}
int oddCnt = 0;
for (int e : res) {
oddCnt += (e % 2);
}
return oddCnt == 0 ? n : n - oddCnt + 1;
}
}