//回文串,偶数个的字符可够成回文串,然后最中间的字符可为奇数个 class Solution { public int longestPalindrome(String s) { //定义一个大小写字母的计数器,统计每个字母出现的次数 int[] count = new int[128]; //遍历字符串s,将出现的每个字符在计数器中计数 for(int i = 0; i < s.length();i++){ char c = s.charAt(i); count[c]++; } //定义一个长度变量,统计最长回文串的长度 int res = 0; //构建回文串 for(int num : count){ // num/2 是统计有几对字符可构建回文串,*2 是统计回文串的长度 res += num / 2 * 2; } //遍历完后,比如有的字符出现了3次,但自能用2次,因为回文串中心还可以有一个元素,所以可以在将回文串的长度+1,仅一次。 if(res < s.length()){ res += 1; } //返回结果 return res; } }