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();
*/