我想知道给定集合中有多少个常见字符。
Input: J = "aA", S = "aAAbbbb"
Output: 3
在python解决方案中,如下所示:
lookup = set(J)
return sum(s in lookup for s in S)
我在Swift中有以下解决方案,它可以工作,但看起来太罗word了。我想学习更短的方法。
class Solution {
func checkInItems(_ J: String, _ S: String) -> Int {
let lookup = Set(J) ;
var sy = 0;
for c in S
{
if lookup.contains(c)
{
sy += 1;
}
}
return sy;
}
}
答案 0 :(得分:5)
作为Sh_Khan's answer的一个小变体,您可以使用reduce
来
计算匹配元素的数量而无需创建中间元素
数组:
func checkInItems(_ J: String, _ S: String) -> Int {
let lookup = Set(J)
return S.reduce(0) { lookup.contains($1) ? $0 + 1 : $0 }
}
在Swift 5中,将有一个count(where:)
序列方法用于此目的,
参见SE-0220 count(where:)
。
答案 1 :(得分:2)
您可以尝试
class Solution {
func checkInItems(_ J: String, _ S: String) -> Int {
let lookup = Set(J)
return S.filter { lookup.contains($0) }.count
}
}