Leetcode409:最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。
**最长回文串的求法:**如果字符出现的次数为偶数次,则直接相加;如果字符出现的次数为奇数次,则结果每次加出现次数-1;如果没有出现奇数次的字符,则直接返回结果;如果出现了奇数次的字符,则返回结果+1。
class Solution {
public int longestPalindrome(String s) {
int j=0;
//保存结果
int res = 0;
int value = 0;
//将字符串存入map
Map<Character, Integer> hmap = new HashMap<Character,Integer>();
for(int i=0;i<s.length();i++){
Character c = s.charAt(i);
if(hmap.containsKey(c)){
value = hmap.get(c);
value = value + 1;
hmap.put(c,value);
}else{
hmap.put(c,1);
}
}
Set set = hmap.keySet();
for(Iterator iter = set.iterator(); iter.hasNext();)
{
char key = (char)iter.next();
value = (int)hmap.get(key);
if(value % 2 ==0){
res = res + value;
}else{
res = res + value -1;
j = j+1;
}
}
if(j==0){
return res;
}else{
return res+1;
}
}
}