diff options
| author | deadmarshal <adeadmarshal@gmail.com> | 2022-09-02 11:13:08 +0430 |
|---|---|---|
| committer | deadmarshal <adeadmarshal@gmail.com> | 2022-09-02 11:13:08 +0430 |
| commit | 29b273fc146113e127bd1664dd8d198d4ad2dcbd (patch) | |
| tree | 53f3b22f0d6b2cf4efd2b55b9104874d3485b2aa /challenge-180/deadmarshal/cpp/ch-1.cpp | |
| parent | d1d8886281c19a0f6119fea49e2f3a9a1b068a89 (diff) | |
| download | perlweeklychallenge-club-29b273fc146113e127bd1664dd8d198d4ad2dcbd.tar.gz perlweeklychallenge-club-29b273fc146113e127bd1664dd8d198d4ad2dcbd.tar.bz2 perlweeklychallenge-club-29b273fc146113e127bd1664dd8d198d4ad2dcbd.zip | |
challenge180
Diffstat (limited to 'challenge-180/deadmarshal/cpp/ch-1.cpp')
| -rw-r--r-- | challenge-180/deadmarshal/cpp/ch-1.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/challenge-180/deadmarshal/cpp/ch-1.cpp b/challenge-180/deadmarshal/cpp/ch-1.cpp new file mode 100644 index 0000000000..389fdd96e6 --- /dev/null +++ b/challenge-180/deadmarshal/cpp/ch-1.cpp @@ -0,0 +1,37 @@ +#include<cstdio> +#include<vector> +#include<string> +#include<unordered_map> + +char *first_unique_character(const std::string& str) +{ + char *buffer = new char[39]; + std::vector<char> chars{str.begin(), str.end()}; + std::unordered_map<char, unsigned> hash{}; + for(const char& c : str) hash[c]++; + for(std::size_t i = 0; i < chars.size(); ++i) + if(hash[chars[i]] == 1) + { + std::snprintf(buffer, + 39, + "%zu as '%c' is the first unique character", + i, + chars[i]); + break; + } + return buffer; +} + +int main(int argc, char *argv[]) +{ + if(argc < 2) + { + fprintf(stderr, "No arg(s) provided!"); + exit(1); + } + char *buffer = first_unique_character(argv[1]); + printf("%s\n", buffer); + delete buffer; + + return 0; +} |
