diff --git a/cpp/2302/230220-CN.cpp b/cpp/2302/230220-CN.cpp new file mode 100644 index 0000000..224bb3f --- /dev/null +++ b/cpp/2302/230220-CN.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +/** + * 2347. Best Poker Hand + * + * You are given an integer array ranks and a character array suits. You have 5 cards where the ith card has a rank of ranks[i] and a suit of suits[i]. + * + * The following are the types of poker hands you can make from best to worst: + * + * "Flush": Five cards of the same suit. + * "Three of a Kind": Three cards of the same rank. + * "Pair": Two cards of the same rank. + * "High Card": Any single card. + * Return a string representing the best type of poker hand you can make with the given cards. + * + * Note that the return values are case-sensitive. + */ + +class Solution { +public: + static inline std::string bestHand(const std::vector& ranks, const std::vector& suits) { + if (std::adjacent_find(suits.begin(), suits.end(), std::not_equal_to<>()) == suits.end()) + return "Flush"; + uint8_t cnt[13]{}; + for (auto i : ranks) + ++cnt[i - 1]; + auto m = *std::max_element(cnt, cnt + 13); + if (m >= 3) + return "Three of a Kind"; + if (m >= 2) + return "Pair"; + return "High Card"; + } +}; diff --git a/cpp/2302/CMakeLists.txt b/cpp/2302/CMakeLists.txt index e32d56e..e942af4 100644 --- a/cpp/2302/CMakeLists.txt +++ b/cpp/2302/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2302) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2302 230220.cpp) +ADD_EXECUTABLE(2302 230220-CN.cpp)