diff options
| author | Walt Mankowski <waltman@pobox.com> | 2020-08-18 19:33:55 -0400 |
|---|---|---|
| committer | Walt Mankowski <waltman@pobox.com> | 2020-08-18 19:33:55 -0400 |
| commit | def033119a52ddd4a71bdc31fc2baa7adb0a7c44 (patch) | |
| tree | c2e3b408ad941021093d9fd61b267f82eb0859db /challenge-074/walt-mankowski/cpp/ch-2.cpp | |
| parent | 3578a4e6eb5649837c11180ba0f3c762cb469b77 (diff) | |
| download | perlweeklychallenge-club-def033119a52ddd4a71bdc31fc2baa7adb0a7c44.tar.gz perlweeklychallenge-club-def033119a52ddd4a71bdc31fc2baa7adb0a7c44.tar.bz2 perlweeklychallenge-club-def033119a52ddd4a71bdc31fc2baa7adb0a7c44.zip | |
c++ solution for challenge 74 task 2
Diffstat (limited to 'challenge-074/walt-mankowski/cpp/ch-2.cpp')
| -rw-r--r-- | challenge-074/walt-mankowski/cpp/ch-2.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/challenge-074/walt-mankowski/cpp/ch-2.cpp b/challenge-074/walt-mankowski/cpp/ch-2.cpp new file mode 100644 index 0000000000..dc94578e19 --- /dev/null +++ b/challenge-074/walt-mankowski/cpp/ch-2.cpp @@ -0,0 +1,39 @@ +#include <string.h> +#include <iostream> +#include <set> +#include <list> + +using namespace std; + +int main(int argc, char *argv[]) { + const char *s = argv[1]; + set<char> seen; + list<char> nr; + char *out = new char[strlen(s)+1]; + out[strlen(s)] = '\0'; + + for (size_t i = 0; i < strlen(s); i++) { + const char c = s[i]; + + // have we seen c before? + if (seen.find(c) == seen.end()) { + seen.insert(c); + nr.push_back(c); + } else { + // remove c from nr + for (auto x = nr.begin(); x != nr.end(); x++) + if (*x == c) { + nr.erase(x); + break; + } + } + + if (nr.empty()) + out[i] = '#'; + else { + auto p = *(nr.crbegin()); + out[i] = p; + } + } + cout << out << endl; +} |
