From 45b61fa12dcdd1075ef4f23583384c15643c602f Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Tue, 9 Feb 2021 00:00:49 +0000 Subject: Add Perl, C, C++ and Basic solutions to challenge 99 --- challenge-099/paulo-custodio/cpp/ch-2.cpp | 52 +++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 challenge-099/paulo-custodio/cpp/ch-2.cpp (limited to 'challenge-099/paulo-custodio/cpp/ch-2.cpp') diff --git a/challenge-099/paulo-custodio/cpp/ch-2.cpp b/challenge-099/paulo-custodio/cpp/ch-2.cpp new file mode 100644 index 0000000000..cf0cfbd04a --- /dev/null +++ b/challenge-099/paulo-custodio/cpp/ch-2.cpp @@ -0,0 +1,52 @@ +/* +TASK #2 › Unique Sub-sequence +Submitted by : Mohammad S Anwar +You are given two strings $S and $T. + +Write a script to find out count of different unique sub-sequences matching +$T without changing the position of characters. + +Example 1: +Input : $S = "littleit', $T = 'lit' +Output : 5 + + 1: [lit] tleit + 2: [li] t[t] leit + 3: [li] ttlei[t] + 4: litt[l] e[it] + 5: [l] ittle[it] +Example 2: +Input : $S = "london', $T = 'lon' +Output : 3 + + 1: [lon] don + 2: [lo] ndo[n] + 3: [l] ond[on] +*/ + +#include + +int count_subsequences(const char* s, const char* t) { + while (true) { + if (!*t) // t is empty, matched + return 1; + else if (!*s) // s is empty, did not match + return 0; + else if (*s == *t) { // same char, check two paths matching and not matching + int matching = count_subsequences(s + 1, t + 1); + int not_matching = count_subsequences(s + 1, t); + return matching + not_matching; + } + else // different char, keep pattern + s++; + } +} + +int main(int argc, char* argv[]) { + if (argc == 3) + std::cout << count_subsequences(argv[1], argv[2]) << std::endl; + else { + std::cerr << "Usage: ch-2 string test" << std::endl; + return EXIT_FAILURE; + } +} -- cgit