Website Summary Files Commits Branches @commit @diff @stats
path: root / Week11 / Exercise09.cpp
diff options
context:
space:
mode:
Commit6bb7b68394ebebbc69e76bee59e9351386115453 (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-12-14 21:56:30 +0200
Committer
 Syndamia <kamen@syndamia.com>
2025-12-14 21:56:30 +0200
Filesc31eb47780b5bfe4d038b6d6b8f32a385d717b96 /Week11/Exercise09.cpp
upp-2025-solutions-6bb7b68394ebebbc69e76bee59e9351386115453.tar
upp-2025-solutions-6bb7b68394ebebbc69e76bee59e9351386115453.tar.gz
upp-2025-solutions-6bb7b68394ebebbc69e76bee59e9351386115453.zip
Parent5ce214686e668bf185222b518b78d7f47a20b4fd (diff)
feat(Week11): Add solutions
1 files changed, 53 insertions, 0 deletions
-rw-r--r--Week11/Exercise09.cpp53
diff --git a/Week11/Exercise09.cpp b/Week11/Exercise09.cpp
new file mode 100644
index 0000000..5091b2f
--- /dev/null
+++ b/Week11/Exercise09.cpp
@@ -0,0 +1,53 @@
+#include <iostream>
+
+char* getField() {
+ unsigned allocated = 8, size = 0;
+ char* output = new char[allocated];
+
+ char curr;
+ std::cin.get(curr);
+
+ while (curr != ' ' && curr != '\n' && curr != '\0') {
+ output[size++] = curr;
+ std::cin.get(curr);
+
+ // Реоразмеряване
+ if (size >= allocated) {
+ allocated *= 2;
+ char* newSentenceArray = new char[allocated];
+
+ for (unsigned i = 0; i < size; i++)
+ newSentenceArray[i] = output[i];
+
+ delete[] output;
+ output = newSentenceArray;
+ }
+ }
+ output[size] = '\0';
+
+ return output;
+}
+
+int main() {
+ char* search = getField(), *pattern = getField();
+
+ // char е 8 битово, което означава че има 2^^8 = 256
+ // на брой различни възможни стойности.
+ // Знаем, че всяка буква всъщност е едно число, затова
+ // можем директно да го използваме като индекс.
+
+ unsigned occurrences[256] = { 0 };
+ for (const char* ser = search; *ser != '\0'; ser++)
+ occurrences[*ser]++;
+
+ unsigned sumOccurrences = 0;
+ for (const char* pat = pattern; *pat != '\0'; pat++)
+ sumOccurrences += occurrences[*pat];
+
+ std::cout << sumOccurrences << std::endl;
+
+ delete[] search;
+ delete[] pattern;
+
+ return 0;
+}