zoukankan      html  css  js  c++  java
  • Palindrome Permutation II

    Given a string s, return all the palindromic permutations (without duplicates) of it. Return an empty list if no palindromic permutation could be form.

    For example:

    Given s = "aabb", return ["abba", "baab"].

    Given s = "abc", return [].

     private static List<String> test(String s) {
            
            List<String> ans = new ArrayList<>();
            if (s == null || s.length() == 0) {
                return ans;
            }
            int[] chs = new int[256];
            for (int i = 0; i < s.length(); i++) {
                chs[s.charAt(i)]++;
            }
            int count = 0;
            for (int i : chs) {
                if (i % 2 == 1) {
                    count++;
                }
                if (count > 1) {
                    return ans;
                }
            }
            String center = "";
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < 256; i++) {
                if (chs[i] % 2 == 1) {
                    center = (String.valueOf((char) i));
                    chs[i]--;
                    break;
                }            
            }
            dfs(ans, chs, center, s.length());
            return ans;        
        }
        private static void dfs(List<String> ans, int[] chs, String s, int len) {
            if (s.length() == len) {
                ans.add(s);
                return;
            }
            for (int i = 0; i < 256; i++) {
                if (chs[i] > 0) {
                    chs[i] -= 2;
                    dfs(ans, chs, ((char) i) + s + ((char) i), len);
                    chs[i] += 2;
                }            
            }
            
        }
    

      

  • 相关阅读:
    190401装饰器-高阶函数-闭包
    190329迭代器-生成器-三元运算-列表解析
    OpenStack-Mitaka
    RabbitMQ
    190328文件处理
    190322函数
    190322字符串
    190321集合
    190320运算符&数据类型
    Zookeeper
  • 原文地址:https://www.cnblogs.com/apanda009/p/7707620.html
Copyright © 2011-2022 走看看