题意:给出一个字符串,问用这个字符串的字符可以组成的最长的对称串的长度
思路:用map来做,如果字符的个数为偶数个,直接相加,如果字符个数为奇数个,取小于这个奇数的最在偶数。如果奇数个字符的个数存在多个,则只能再加1
代码如下:
public class Solution
{
public int longestPalindrome(String s)
{
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++)
{
if (map.containsKey(s.charAt(i)))
{
map.put(s.charAt(i), map.get(s.charAt(i)) + 1);
}
else
{
map.put(s.charAt(i), 1);
}
}
int ans = 0;
boolean flag = false;
for(Map.Entry<Character, Integer> entity: map.entrySet())
{
if (entity.getValue() % 2 == 0)
{
ans += entity.getValue();
}
else
{
ans += entity.getValue() & ~1;
if (!flag)
{
ans += 1;
flag = true;
}
}
}
return ans;
}
}