package com.dm.zcy.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
public class Main2 {
public static Stack path=new Stack<>();
public static List<String> result=new ArrayList<String>();
public static void main(String[] args) {
String s="jawaLR";
char[] array = s.toCharArray();
List list = new ArrayList<>();
for (char c : array) {
list.add(c);
}
backBlocking(list,s.length(),0);
String[] strs = result.toArray(new String[result.size()]);
for (String str : strs) {
System.out.print(str+" ");
}
result.clear();
}
public static void backBlocking(List list,int k,int startIndex){
if (path.size()==k){
String s = path.toString();
StringBuilder sb = new StringBuilder();
for (int i=0;i<k;i++){
sb.append(path.get(i).toString());
}
result.add(sb.toString());
return;
}
for (int i=startIndex;i<list.size();i++){
if (i>1){
if (list.get(i).equals(list.get(i-1))){
continue;
}
}
path.push(list.get(i));
Object remove = list.remove(i);
backBlocking(list,k,0);
list.add(i,remove);
path.pop();
}
}
}
## 77.组合
```java
class Solution {
public static ArrayList<Integer> path=new ArrayList();
public static ArrayList list;
public List<List<Integer>> combine(int n, int k) {
list=new ArrayList<>();
backTracking(n,k,1);
return list;
}
public void backTracking(int n,int k,int startIndex){
if(path.size()==k){
list.add(new ArrayList<>(path));
return;
}
for(int i=startIndex;i<=n-(k-path.size())+1;i++){
path.add(i);
backTracking(n,k,i+1);
path.remove(Integer.valueOf(i));
}
}
}