题目:给出一串字符串,找出有可能组成的最长回文串的长度。
例如:abccccdd,可以组成ccdadcc,也可以组成ccdbdcc,最长回文串的长度为7。
思路分析:分析题目就能看出来,所有可能的回文串组合,其实还是比较简单的,并不考虑字符串中字符的初始位置。因此,只需要找出总共有多少成对的字符,最后再加上一个单个字符(如果有的话),就是可能组成的最长回文串长度。
Java代码:
public static void main(String[] args) {
String str="abccccdd";
HashSet<Character> set=new HashSet<>();
int len=0;
for(int i=0;i<str.length();i++) {
if(set.contains(str.charAt(i))) {
len++;
len++;
set.remove(str.charAt(i));
}else {
set.add(str.charAt(i));
}
}
if(!set.isEmpty()) {
len++;
}
System.out.println(len);
}