依旧排列组合问题

来源:互联网 发布:淘宝兼职客服一般多少 编辑:程序博客网 时间:2024/06/06 17:57
public static void arragments(int[] a, int first, int num){if(num == 0){for(int i : a){System.out.print(i);}System.out.println();return;}for(int i = first; i < first + num; i++){swap(a, i, first);arragments(a, first + 1, num - 1);swap(a, first, i);}}private static void swap(int[] a, int i, int first) {int temp = a[i];a[i] = a[first];a[first] = temp;}public static List findAllArrangment(String input){List<String> result = new ArrayList<String>();if(input.length() == 0){result.add("");return result;}else{char a = input.charAt(0);List<String> subResult = new ArrayList<String>();String remain = input.substring(1);subResult = findAllArrangment(remain);for(String s : subResult){for (int j = 0; j <= s.length(); j++) {result.add(insertCharAt(s, a, j));}}return result;}}public static List findAllCombination(String input){List<String> result;if(0 == input.length()){result = new ArrayList();;result.add(new String(""));return result;}else{char c = input.charAt(0);String remain = input.substring(1);result = findAllCombination(remain);List<String> moreResult = new ArrayList();;for(String s : result){moreResult.add(s+c);}result.addAll(moreResult);return result;}}public static String insertCharAt(String word, char c, int i) {String start = word.substring(0, i);String end = word.substring(i);return start + c + end;}

原创粉丝点击