rendered paste bodyimport java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.List;
public class Permut2 {
public static void permut(List<String> tail, String acc) {
if(null == tail) {
throw new InvalidParameterException("Tail can't be null");
}
if(null == acc) {
throw new InvalidParameterException("Acc can't be null");
}
if(0 == tail.size()) {
System.out.println(acc);
}
List<String> alreadyDone= new ArrayList<String>();
for(String s : tail) {
if(!alreadyDone.contains(s)) {
alreadyDone.add(s);
List<String> newTail = new ArrayList<String>();
boolean skipped = false;
for(String t : tail) {
if(s.equals(t)) {
if(skipped) {
newTail.add(t);
} else {
skipped = true;
}
} else {
newTail.add(t);
}
}
permut(newTail, acc+s);
}
}
}
public static void main(String[] args) {
if(args.length < 1)
return;
List<String> tail = new ArrayList<String>();
for(char c : args[0].toCharArray()) {
tail.add(new String(new char[] {c}));
}
permut(tail,"");
}
}