JAVA EASY SOLUTION
\nclass CombinationIterator {\n\n    boolean has=true;\n    int length=0;\n    String chars;\n    int pointers[];\n    public CombinationIterator(String charact
```\nclass CombinationIterator {\n\n    boolean has=true;\n    int length=0;\n    String chars;\n    int pointers[];\n    public CombinationIterator(String characters, int combinationLength) {\n        chars=characters;\n        length=combinationLength;\n        pointers=new int[length];\n        for(int i=0;i<length;i++)\n            pointers[i]=i;\n        \n    }\n    \n    public String next() {\n        String result="";\n        for(int i=0;i<length;i++)\n            result+=chars.charAt(pointers[i]);\n        has=check();\n        return result;\n        \n        \n        \n    }\n    \n    public boolean check(){\n        for(int i=length-1, j=chars.length()-1;i>=0;i--,j--){\n            if(pointers[i]!=j){\n                pointers[i]++;\n                for(int k=i+1;k<length;k++)\n                    pointers[k]=pointers[k-1]+1;\n                return true;\n            }\n            \n        }\n        return false;\n    }\n    \n    \n    public boolean hasNext() {\n        return has;\n    }\n}\n\n/**\n * Your CombinationIterator object will be instantiated and called as such:\n * CombinationIterator obj = new CombinationIterator(characters, combinationLength);\n * String param_1 = obj.next();\n * boolean param_2 = obj.hasNext();\n */\n```
[]