diff --git a/README.md b/README.md index eefbaeb..fb44335 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ LeetCode |1781|[Sum of Beauty of All Substrings](https://leetcode.com/problems/sum-of-beauty-of-all-substrings/) | [C++](./algorithms/cpp/sumOfBeautyOfAllSubstrings/SumOfBeautyOfAllSubstrings.cpp)|Medium| |1780|[Check if Number is a Sum of Powers of Three](https://leetcode.com/problems/check-if-number-is-a-sum-of-powers-of-three/) | [C++](./algorithms/cpp/checkIfNumberIsASumOfPowersOfThree/CheckIfNumberIsASumOfPowersOfThree.cpp)|Medium| |1779|[Find Nearest Point That Has the Same X or Y Coordinate](https://leetcode.com/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | [C++](./algorithms/cpp/findNearestPointThatHasTheSameXOrYCoordinate/FindNearestPointThatHasTheSameXOrYCoordinate.cpp)|Easy| +|1773|[Count Items Matching a Rule](https://leetcode.com/problems/count-items-matching-a-rule/) | [C++](./algorithms/cpp/countItemsMatchingARule/CountItemsMatchingARule.cpp)|Easy| |1763|[Longest Nice Substring](https://leetcode.com/problems/longest-nice-substring/) | [C++](./algorithms/cpp/longestNiceSubstring/LongestNiceSubstring.cpp)|Easy| |1761|[Minimum Degree of a Connected Trio in a Graph](https://leetcode.com/problems/minimum-degree-of-a-connected-trio-in-a-graph/) | [C++](./algorithms/cpp/minimumDegreeOfAConnectedTrioInAGraph/MinimumDegreeOfAConnectedTrioInAGraph.cpp)|Hard| |1760|[Minimum Limit of Balls in a Bag](https://leetcode.com/problems/minimum-limit-of-balls-in-a-bag/) | [C++](./algorithms/cpp/minimumLimitOfBallsInABag/MinimumLimitOfBallsInABag.cpp)|Medium| diff --git a/algorithms/cpp/countItemsMatchingARule/CountItemsMatchingARule.cpp b/algorithms/cpp/countItemsMatchingARule/CountItemsMatchingARule.cpp new file mode 100644 index 0000000..7bb0ca6 --- /dev/null +++ b/algorithms/cpp/countItemsMatchingARule/CountItemsMatchingARule.cpp @@ -0,0 +1,60 @@ +// Source : https://leetcode.com/problems/count-items-matching-a-rule/ +// Author : Hao Chen +// Date : 2021-03-14 + +/***************************************************************************************************** + * + * You are given an array items, where each items[i] = [typei, colori, namei] describes the type, + * color, and name of the ith item. You are also given a rule represented by two strings, ruleKey and + * ruleValue. + * + * The ith item is said to match the rule if one of the following is true: + * + * ruleKey == "type" and ruleValue == typei. + * ruleKey == "color" and ruleValue == colori. + * ruleKey == "name" and ruleValue == namei. + * + * Return the number of items that match the given rule. + * + * Example 1: + * + * Input: items = [["phone","blue","pixel"],["computer","silver","lenovo"],["phone","gold","iphone"]], + * ruleKey = "color", ruleValue = "silver" + * Output: 1 + * Explanation: There is only one item matching the given rule, which is + * ["computer","silver","lenovo"]. + * + * Example 2: + * + * Input: items = [["phone","blue","pixel"],["computer","silver","phone"],["phone","gold","iphone"]], + * ruleKey = "type", ruleValue = "phone" + * Output: 2 + * Explanation: There are only two items matching the given rule, which are ["phone","blue","pixel"] + * and ["phone","gold","iphone"]. Note that the item ["computer","silver","phone"] does not match. + * + * Constraints: + * + * 1 <= items.length <= 104 + * 1 <= typei.length, colori.length, namei.length, ruleValue.length <= 10 + * ruleKey is equal to either "type", "color", or "name". + * All strings consist only of lowercase letters. + ******************************************************************************************************/ + +class Solution { +public: + int countMatches(vector>& items, string ruleKey, string ruleValue) { + int idx; + switch(ruleKey[0]) { + case 't': idx = 0; break; + case 'c': idx = 1; break; + case 'n': idx = 2; break; + default: return 0; + } + + int cnt = 0; + for (auto& item : items) { + if (item[idx] == ruleValue) cnt++; + } + return cnt; + } +};