虽然这可能不是一个很好的例子,但是正如问题所指出的,我希望将randomNo
与numberSets
中的集合进行比较。但是,找到一个号码后,我想知道是否有一种方法可以跳到下一个号码。
总结randomNo
包含2个可以在同一集合中找到的数字,分别是“ 6”和“ 9”。我想知道在我找到“ 6”的那一刻是否可以使该集合的其余部分无效,并移至下一个集合,而无需循环浏览集合中的其余数字
init() {
let numberSet1 : Set<Int> = [1,2,3,4,5]
let numberSet2 : Set<Int> = [6,7,8,9,10]
let numberSet3 : Set<Int> = [11,12,13,14,15]
let randomNo = [3,6,9,11]
numberSets = [numberSet1,numberSet2,numberSet3]
}
func searchFor(){
for num in randomNo{
for set in numberSets{
if set.contains(num) {
print("The following number was found: ", num)
}
}
}
}
答案 0 :(得分:0)
一种方法是continue
外循环:
outer: for num in randomNo{
for set in numberSets{
if set.contains(num) {
print("The following number was found: ", num)
continue outer
}
}
}
另一种方法是将所有三个集合合并:
let union = numberSet1.union(numberSet2).union(numberSet3)
print(randomNo.filter(union.contains))
答案 1 :(得分:0)
首先,我认为值得一提的是,在您的示例中,代码不是在集合中循环,而不是在集合(php-fpm
,randomNo
)数组中循环。
如果我正确地解决了该问题,则无需优化查找集合中的元素。询问集合是否包含元素(查找)不是一项昂贵的操作,并且复杂度为numberSets
。
如果要在找到第一个数字后停止遍历O(1)
,只需使用numberSets
控制流语句即可:
break
希望有帮助。