zoukankan      html  css  js  c++  java
  • 面试题 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;
        }

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    小节 +三元表达式
    continue
    break
    flag标签
    #region #endregion
    for 循环
    do while 有例句体会循环的真正原理
    while 循环
    前缀和与差分
    递归的循环实现
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13545032.html
Copyright © 2011-2022 走看看