描述
给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。
数据是大小写敏感的,也就是说,"Aa"
并不会被认为是一个回文串。
样例
样例 1:
输入 : s = "abccccdd"
输出 : 7
说明 :
一种可以构建出来的最长回文串方案是 "dccaccd"。
注意事项
假设字符串的长度不会超过 1010
。
代码部分
import java.lang.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
public class Solution {
public static int longestPalindrome(String s) {
// write your code here
char[] ss=s.toCharArray();
Map<Character,Integer> map=new HashMap<Character,Integer>();
for(int i=0;i<ss.length;i++){
if(map.containsKey(ss[i])){
map.put(ss[i],map.get(ss[i])+1);
}
else{
map.put(ss[i],1);
}
}
int count=0;
boolean flag=false;
for(Integer value:map.values()){
if(value%2==0){
count=count+value;
}
if(value%2==1&&value!=1){
flag=true;
count=count+value-1;
}
if(value==1){
flag=true;
}
}
if(flag){
return count+1;
}
return count;
}
public static void main(String[] args) {
String a="abccccdd";
int x=longestPalindrome(a);
System.out.print(x);
}
}
补充说明
最开始把 i 写成了1,导致调试了半天