面试题 01.04. 回文排列

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;
    }

 

posted @ 2020-08-22 12:07  欣姐姐  阅读(176)  评论(0编辑  收藏  举报