diff options
| author | Paulo Custodio <pauloscustodio@gmail.com> | 2021-02-09 00:00:49 +0000 |
|---|---|---|
| committer | Paulo Custodio <pauloscustodio@gmail.com> | 2021-02-11 21:49:58 +0000 |
| commit | 45b61fa12dcdd1075ef4f23583384c15643c602f (patch) | |
| tree | 11e6b06416d835fea1a5e0d2bc426047167c9758 /challenge-099/paulo-custodio/cpp/ch-2.cpp | |
| parent | 090da47b42eb061cec9f7f395e6aa17fd0b500a1 (diff) | |
| download | perlweeklychallenge-club-45b61fa12dcdd1075ef4f23583384c15643c602f.tar.gz perlweeklychallenge-club-45b61fa12dcdd1075ef4f23583384c15643c602f.tar.bz2 perlweeklychallenge-club-45b61fa12dcdd1075ef4f23583384c15643c602f.zip | |
Add Perl, C, C++ and Basic solutions to challenge 99
Diffstat (limited to 'challenge-099/paulo-custodio/cpp/ch-2.cpp')
| -rw-r--r-- | challenge-099/paulo-custodio/cpp/ch-2.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
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 <iostream> + +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; + } +} |
