最长回文串

/*最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
示例 1:
输入:
"abccccdd"
输出:
7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
https://leetcode-cn.com/problems/longest-palindrome/*/
public static int longestPalindrome(String s) {
if(s == null && s.length() == 0){
return 0;
}
Map<Character,Integer> result = new HashMap<Character,Integer>(52);
char[] chars = s.toCharArray();
int resul = 0;
for (int i = 0; i <chars.length ; i++) {
if(result.containsKey(chars[i])){
Integer integer = result.get(chars[i]);
result.put(chars[i],integer+1);
if(result.get(chars[i]) % 2 == 0){
result.put(chars[i],0);
resul += 2;
}
continue;
}
result.put(chars[i],1);
}
return resul==s.length()?s.length():resul+1;
}

public static int longestPalindrome2(String s){
int r = 0;
int[] charInt = new int[58];//A 65 a 97
char[] chars = s.toCharArray();
for(int i = 0;i<chars.length;i++){
charInt[chars[i]-'A'] += 1;
}
for(int i:charInt){
int i1 = i / 2;
r +=i1*2;
}
return r==s.length()?s.length():r+1 ;
}
上一篇:【python-leetcode269-拓扑排序】火星字典


下一篇:将字符串进行降序输出