From def033119a52ddd4a71bdc31fc2baa7adb0a7c44 Mon Sep 17 00:00:00 2001 From: Walt Mankowski Date: Tue, 18 Aug 2020 19:33:55 -0400 Subject: c++ solution for challenge 74 task 2 --- challenge-074/walt-mankowski/cpp/ch-2.cpp | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 challenge-074/walt-mankowski/cpp/ch-2.cpp (limited to 'challenge-074/walt-mankowski/cpp') 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 +#include +#include +#include + +using namespace std; + +int main(int argc, char *argv[]) { + const char *s = argv[1]; + set seen; + list 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; +} -- cgit