LeetCode 1773. 统计匹配检索规则的物品数量
在这个问题中,我们被要求统计一个物品数组中满足特定检索规则的物品数量。每个物品由其类型、颜色和名称定义,而检索规则由规则键和规则值指定。我们的任务是找出数组中满足这些规则的物品数量。
问题描述
解题思路
-
定义索引映射:首先,我们需要定义一个映射,将规则键("type"、"color"、"name")映射到物品数组中对应的索引(0、1、2)。
-
遍历物品数组:然后,我们遍历物品数组,对于每个物品,检查其是否满足给定的检索规则。
-
匹配规则:根据规则键,我们检查物品的相应属性是否与规则值匹配。
-
统计匹配数量:如果物品满足规则,我们增加匹配计数。
代码实现
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
class Solution {
public:
int countMatches(vector<vector<string>>& items, string ruleKey, string ruleValue) {
unordered_map<string, int> keyToIndex = {
{"type", 0},
{"color", 1},
{"name", 2}
};
int count = 0;
int index = keyToIndex[ruleKey]; // 根据规则键获取对应的索引
for (auto& item : items) {
if (item[index] == ruleValue) {
count++;
}
}
return count;
}
};
代码解释
-
定义索引映射:使用
unordered_map
将规则键映射到物品数组中的索引。 -
初始化计数器:
count
用于记录匹配规则的物品数量,初始值为0。 -
获取索引:根据
ruleKey
获取对应的索引。 -
遍历物品数组:使用
for
循环遍历items
数组中的每个物品。 -
检查匹配:对于每个物品,检查其相应属性是否与
ruleValue
匹配。 -
更新计数:如果物品匹配规则,增加
count
的值。 -
返回结果:遍历完成后,返回
count
,即匹配规则的物品数量。