首页 > 代码库 > 9.5 确定某字符串的所有排列组合。
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")); }}
9.5 确定某字符串的所有排列组合。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。