zoukankan      html  css  js  c++  java
  • 9.5 确定某字符串的所有排列组合。

    还是permutation的算法,字符串也没什么太大的区别。 先排序,然后注意如何去重。

    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class Solution {
    
        public static ArrayList<String> getPerms(String str) {
            ArrayList<String> res = new ArrayList<String>();
            if (str == null || str.length() == 0)
                return res;
            StringBuilder sb = new StringBuilder();
            char[] strs = str.toCharArray();
            Arrays.sort(strs);
            perm(res, sb, new String(strs));
    
            return res;
        }
    
        private static void perm(ArrayList<String> res, StringBuilder sb, String str) {
            if (sb.length() == str.length()) {
                res.add(sb.toString());
                return;
            }
    
            for (int i = 0; i < str.length(); i++) {
                // remove the duplicates
                if (i == 0 || str.charAt(i) != str.charAt(i - 1)) {
                    int all = 0;
                    int cur = 0;
                    for (int j = 0; j < str.length(); j++) {
                        if (str.charAt(j) == str.charAt(i)) {
                            all++;
                        }
                    }
                    // be careful: sb.length()
                    for (int j = 0; j < sb.length(); j++) {
                        if (sb.charAt(j) == str.charAt(i)) {
                            cur++;
                        }
                    }
    
                    if (cur < all) {
                        sb.append(str.charAt(i));
                        perm(res, sb, str);
                        sb.deleteCharAt(sb.length() - 1);
                    }
                }
    
            }
    
        }
    
        public static void main(String[] args) {
            int[] a = { 0, 2, 4, 5 };
            System.out.println(getPerms("aba"));
        }
    }
  • 相关阅读:
    Yahoo 14条 雅虎十四条 优化原则【转】
    从HTML1到HTML5,回首HTML发展历史【转】
    HTML的发展历史【转】
    jquery中prop()方法和attr()方法的区别【转】
    一个文献综述的写法
    ammunition用法
    混了SQL连接就运行这个
    cruel用法
    ball up用法
    episode用法
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3931834.html
Copyright © 2011-2022 走看看