public boolean canPermutePalindrome(String s) { char[] c = s.toCharArray(); int n = c.length; Map<Character,Integer> map = new HashMap<>(); for (char value : c) { if (!map.containsKey(value)) { map.put(value, 1); } else { map.put(value, map.get(value) + 1); } } Collection<Integer> set = map.values(); Iterator<Integer> integerIterator = set.iterator(); if(n%2==0){ //个数全部是偶数 while (integerIterator.hasNext()){ if(integerIterator.next()%2==1) return false; integerIterator.remove(); } }else{ boolean odd_number = false; while (integerIterator.hasNext()){ if(integerIterator.next()%2==1){ if(odd_number)return false; odd_number = true; } integerIterator.remove(); } } return true; }
public boolean canPermutePalindrome(String s) { Long n=0l; char[] c = s.toCharArray(); int[] status = new int[128]; int t=0; for(char c1:c){ if(status[c1]!=0){ t--; status[c1]=0; }else { status[c1]=1; t++; } } return t==1||t==0; }