Iterator for Combination

写一个Iterator遍历长度为k的n个字符的组合. 这个题就是把Combination写成api. 所以先算出k个n的comb, 然后就直接输出

class CombinationIterator {
    List<String> q = new ArrayList<>();
    public CombinationIterator(String characters, int combinationLength) {
        pre(q, characters.toCharArray(), new StringBuilder(),combinationLength,0);
    }
    private void pre(List<String> q, char[] c, StringBuilder sb,int k, int pos) {
        if(sb.length() == k) {
            q.add(sb.toString());
            return;
        }
        for(int i = pos; i < c.length; i++) {
            sb.append(c[i]);
            pre(q, c, sb, k, i+1);
            sb.deleteCharAt(sb.length() - 1);
        }
    }
    public String next() {
        return q.remove(0);
    }
    
    public boolean hasNext() {
        return q.size() > 0;
    }
}

/**
 * Your CombinationIterator object will be instantiated and called as such:
 * CombinationIterator obj = new CombinationIterator(characters, combinationLength);
 * String param_1 = obj.next();
 * boolean param_2 = obj.hasNext();
 */