diff options
| author | crupest <crupest@outlook.com> | 2020-10-09 14:52:08 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2020-10-09 14:52:08 +0800 | 
| commit | 7f39523b6b2bf109fb92041e3c9215a9e31ab6f4 (patch) | |
| tree | 490d793288706e2ded95e44e307146375e297a22 | |
| parent | 5c5a2b2048f230457028a59924858ba80bb9fff8 (diff) | |
| download | crupest-7f39523b6b2bf109fb92041e3c9215a9e31ab6f4.tar.gz crupest-7f39523b6b2bf109fb92041e3c9215a9e31ab6f4.tar.bz2 crupest-7f39523b6b2bf109fb92041e3c9215a9e31ab6f4.zip | |
import(solutions): Add problem 1286 .
| -rw-r--r-- | works/solutions/cpp/1286.cpp | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/works/solutions/cpp/1286.cpp b/works/solutions/cpp/1286.cpp new file mode 100644 index 0000000..1ad0d4e --- /dev/null +++ b/works/solutions/cpp/1286.cpp @@ -0,0 +1,56 @@ +#include <string> + +using std::string; + +#include <vector> + +class CombinationIterator { +public: +  string chars; +  int char_length; +  int combinationLength; +  bool has_next = true; +  std::vector<int> indices; + +  CombinationIterator(string characters, int combinationLength) +      : chars(characters), char_length(characters.size()), +        combinationLength(combinationLength) { +    for (int i = 0; i < combinationLength; i++) { +      indices.push_back(i); +    } +  } + +  string next() { +    string result; +    for (auto index : indices) { +      result.push_back(chars[index]); +    } + +    int count = 1; +    while (indices[combinationLength - count] == char_length - count) { +      count++; +      if (count > combinationLength) { +        has_next = false; +        return result; +      } +    } + +    indices[combinationLength - count] += 1; +    for (int i = combinationLength - count + 1; i < combinationLength; i++) { +      indices[i] = indices[i - 1] + 1; +    } + +    return result; +  } + +  bool hasNext() { +    return has_next; +  } +}; + +/** + * 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(); + */
\ No newline at end of file | 
