aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-10-09 14:52:08 +0800
committercrupest <crupest@outlook.com>2020-10-09 14:52:08 +0800
commit7f39523b6b2bf109fb92041e3c9215a9e31ab6f4 (patch)
tree490d793288706e2ded95e44e307146375e297a22
parent5c5a2b2048f230457028a59924858ba80bb9fff8 (diff)
downloadcrupest-7f39523b6b2bf109fb92041e3c9215a9e31ab6f4.tar.gz
crupest-7f39523b6b2bf109fb92041e3c9215a9e31ab6f4.tar.bz2
crupest-7f39523b6b2bf109fb92041e3c9215a9e31ab6f4.zip
import(solutions): Add problem 1286 .
-rw-r--r--works/solutions/cpp/1286.cpp56
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