diff options
| author | 冯昶 <seaker@qq.com> | 2020-08-25 14:02:24 +0800 |
|---|---|---|
| committer | 冯昶 <seaker@qq.com> | 2020-08-25 14:02:24 +0800 |
| commit | ec9e40b0acf8571ff15678cddd4f19eded756e72 (patch) | |
| tree | b17ef3f9f3664e265fee053a3a818203e60d0bc2 /challenge-074/walt-mankowski/cpp/ch-2.cpp | |
| parent | c78c938183297e7e8f494dd4a59fe82494f42774 (diff) | |
| parent | fd1f031ae79f262a59491231fb638176af79f92f (diff) | |
| download | perlweeklychallenge-club-ec9e40b0acf8571ff15678cddd4f19eded756e72.tar.gz perlweeklychallenge-club-ec9e40b0acf8571ff15678cddd4f19eded756e72.tar.bz2 perlweeklychallenge-club-ec9e40b0acf8571ff15678cddd4f19eded756e72.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-074/walt-mankowski/cpp/ch-2.cpp')
| -rw-r--r-- | challenge-074/walt-mankowski/cpp/ch-2.cpp | 36 |
1 files changed, 36 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..ab8b330e19 --- /dev/null +++ b/challenge-074/walt-mankowski/cpp/ch-2.cpp @@ -0,0 +1,36 @@ +#include <string> +#include <iostream> +#include <map> +#include <list> + +using namespace std; + +int main(int argc, char *argv[]) { + const string s(argv[1]); + string out = string(s.length(), ' '); + map<char,list<char>::const_iterator> seen; + list<char> nr; + + for (size_t i = 0; i < s.length(); i++) { + const char c = s[i]; + + // have we seen c before? + if (seen.find(c) == seen.end()) { + nr.push_front(c); + seen[c] = nr.cbegin(); + } else { + // remove c from nr + if (seen[c] != nr.end()) { + nr.erase(seen[c]); + seen[c] = nr.end(); + } + } + + // now the FNR is either the last element of nr, or # + if (nr.empty()) + out[i] = '#'; + else + out[i] = *(nr.cbegin()); + } + cout << out << endl; +} |
