Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.
This is case sensitive, for example “Aa” is not considered a palindrome here.
Note:
Assume the length of given string will not exceed 1,010.
Example:
Input:
“abccccdd”
Output:
7
Explanation:
One longest palindrome that can be built is “dccaccd”, whose length is 7.
回文串里只能存在一个成单的字符,其他字符都要成双。我们可以利用set的特性,遍历string,判断是否已经存在可以与当前遍历到的char匹配的字符,若有,则将其匹配的字符从set中移除。到最后若set中还存在字符,则有单个字符存在,此时将结果+1即可。
AC码如下:
public class Solution {
public int longestPalindrome(String s) {
int result = 0;
Set<Character> count = new HashSet<Character>();
for(int i=0;i<s.length();i++){
if(count.contains(s.charAt(i))){
result++;
count.remove(s.charAt(i));
}else{
count.add(s.charAt(i));
}
}
if(!count.isEmpty()){
return result*2+1;
}
return result*2;
}
}