【1029】

 【LeetCode每日一题】1773. 统计匹配检索规则的物品数量

给你一个数组 items ,其中 items[i] = [typei, colori, namei] ,描述第 i 件物品的类型、颜色以及名称。

另给你一条由两个字符串 ruleKey 和 ruleValue 表示的检索规则。

如果第 i 件物品能满足下述条件之一,则认为该物品与给定的检索规则 匹配 :

  • ruleKey == "type" 且 ruleValue == typei 。
  • ruleKey == "color" 且 ruleValue == colori 。
  • ruleKey == "name" 且 ruleValue == namei 。

统计并返回 匹配检索规则的物品数量 。

class Solution {
    public int countMatches(List<List<String>> items, String ruleKey, String ruleValue) {
        //将对象关键字存起来
        int target = -1;
        switch(ruleKey){
            case "type":
                target = 0;
                break;
            case "color":
                target = 1;
                break;
            case "name":
                target = 2;
                break;
            default:
                break;
        };
        if(target == -1){
            return -1;
        }

        //比较
        int res = 0;
        for(List<String> values : items){
            if(values.get(target).equals(ruleValue)){
                res++;
            }
        }
        return res;
    }
}

 

在考虑目标元素下标的时候,可以使用更简单的?:判断
即 int target = ruleKey.equals("type")?0:ruleKey.equals("color")?1:2;
第一种使用存储空间46.2MB,第二种46MB节省了0.2的内存空间,在实际应用中影响不大但是当数量堆积到一定程度上之后,代码的简洁美观加上节省的内存空间有可能成为一个很重要的地方。
 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
posted @ 2022-10-29 18:03  Wianxhlyl  阅读(58)  评论(0)    收藏  举报