All pastes #822096 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-12-18 14:59 UTC
rendered paste body
import 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,"");
    }
}