力扣:1773. 统计匹配检索规则的物品数量

目录

一.题目

二.解题思路

三.代码

四.题后语

一.题目

        1.题目详情

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

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

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

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

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

示例 1:

输入:items = [["phone","blue","pixel"],["computer","silver","lenovo"],["phone","gold","iphone"]], ruleKey = "color", ruleValue = "silver"
输出:1
解释:只有一件物品匹配检索规则,这件物品是 ["computer","silver","lenovo"] 。

力扣:1773. 统计匹配检索规则的物品数量 - 力扣(Leetcode)icon-default.png?t=M85Bhttps://leetcode.cn/problems/count-items-matching-a-rule/description/

二.解题思路

        1.利用hashmap将我们需要的数组索引与题目会给的值进行关联

        2.获取到ruleKey对应的索引存到index

        3.这时候我们只需要遍历出List中数组对应index值与ruleKey是否相等就完成了

三.代码

class Solution {
    public int countMatches(List<List<String>> items, String ruleKey, String ruleValue) {
        Map<String,Integer> map = new HashMap();//利用hashmap将type\coor\name与我们需要的编号0、1、2
        map.put("type",0);map.put("color",1);map.put("name",2);
        int index = map.get(ruleKey);//或取相应字符串对应的编号
        int sount=0;
        for(List<String> item:items)//遍历items并获取里面数组对应index的值与ruleValue比较
            if(item.get(index).equals(ruleValue))sount+=1;
        return sount;
    }
}

四.题后语(

 

        这道题拿到的时候,我第一时间看到List<List<String>>是想用两个遍历来获取结果,第一个遍历来获取对应的ruleKey,第二个遍历来获取对应的ruleKey,就可以得到结果。然后我到api里面找看看有没有能直接获取到list字段的方法,结果是没有。就在不知道怎么办的时候,突然反应过来,这个items好像是--items[item{"xxx","yyy","zzz"},item{"xxx","yyy","zzz"},item{"xxx","yyy","zzz"}]--这样的一个结构,好像没有题目给的“type,color,name"字段,在数组里面已经是一个具体的值了。再细读题目,那么ruleKey,就是用来看这个对应的是item中第几个值的Sting,但遍历item需要的是int型的数据,那么怎么样才能将两种数据类型进行关联,我就想到了用HashMap与下标关联,这样,程序拿到ruleKey时,先到Map里面找到对应的index,然后再将index带到循环里面取遍历就可以解决了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值