解题思路:
(1)首先求出所有组合(递归)
(2)设置当前指针即可
class CombinationIterator {
private:
vector<string> v;
int count = 0;
public:
void get_combination(string &s,string &p,int k,int begin,int index) {
if(k==0) {
v.push_back(p);
return;
}
for(int i=begin;i<s.length();i++) {
p[index]=s[i];
get_combination(s,p,k-1,i+1,index+1);
}
}
CombinationIterator(string characters, int combinationLength) {
string p = characters.substr(0,combinationLength);
get_combination(characters,p,combinationLength,0,0);
}
string next() {
return v[count++];
}
bool hasNext() {
if(count<v.size()) return true;
else return false;
}
};
/**
* Your CombinationIterator object will be instantiated and called as such:
* CombinationIterator* obj = new CombinationIterator(characters, combinationLength);
* string param_1 = obj->next();
* bool param_2 = obj->hasNext();
*/