码迷,mamicode.com
首页 > 其他好文 > 详细

9.5 确定某字符串的所有排列组合。

时间:2014-08-23 22:57:11      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   os   io   for   ar   div   

 

还是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"));
    }
}

 

9.5 确定某字符串的所有排列组合。

标签:style   blog   color   java   os   io   for   ar   div   

原文地址:http://www.cnblogs.com/jdflyfly/p/3931834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!