题目描述:
简单题
给你一个数组 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"] 。
示例 2:
输入:items = [["phone","blue","pixel"],["computer","silver","phone"],["phone","gold","iphone"]], ruleKey = "type", ruleValue = "phone" 输出:2 解释:只有两件物品匹配检索规则,这两件物品分别是 ["phone","blue","pixel"] 和 ["phone","gold","iphone"] 。注意,["computer","silver","phone"] 未匹配检索规则。
提示:
1 <= items.length <= 104
1 <= typei.length, colori.length, namei.length, ruleValue.length <= 10
ruleKey
等于"type"
、"color"
或"name"
- 所有字符串仅由小写字母组成
代码
python代码
class Solution:
def countMatches(self, items: List[List[str]], ruleKey: str, ruleValue: str) -> int:
x=['type','color','name']
count=0
for i in range(3):
if ruleKey==x[i]:
n=i
break
for i in range(len(items)):
if items[i][n]==ruleValue:
count=count+1
return count
时间52ms
另一种python代码:
class Solution:
def countMatches(self, items: List[List[str]], ruleKey: str, ruleValue: str) -> int:
ans=0
for item in items:
if ruleKey=='type' and item[0]==ruleValue:
ans+=1
elif ruleKey=='color' and item[1]==ruleValue:
ans+=1
elif ruleKey=='name' and item[2]==ruleValue:
ans+=1
else:
continue
return ans
java代码
class Solution {
public int countMatches(List<List<String>> items, String ruleKey, String ruleValue) {
String x[]={"type","color","name"};
int count=0,n=0;
for(int i=0;i<3;i++){
if(ruleKey.equals(x[i])){
n=i;
break;
}
}
for(int i=0;i<items.size();i++){
if(items.get(i).get(n).equals(ruleValue)){
count=count+1;
}
}
return count;
}
}
时间为4ms
C语言代码
int countMatches(char *** items, int itemsSize, int* itemsColSize, char * ruleKey, char * ruleValue){
int i,n,ans=0;
if(strcmp(ruleKey,"type")==0){
n=0;
}
else if(strcmp(ruleKey,"color")==0){
n=1;
}
else{
n=2;
}
for(i=0;i<itemsSize;i++){
if(strcmp(items[i][n],ruleValue)==0){
ans++;
}
}
return ans;
}