Swift如何判断是否存在两个集合各包含2个指定主集合的元素
核心实现思路
- 先将13个待比对的集合存入数组,避免逐个手动判断
- 遍历数组内的每个集合,计算其与主集合
mainSetA的交集元素数量 - 统计所有交集元素数≥2的集合,只要统计结果≥2就说明符合你要的条件
完整可运行代码
import UIKit func generateRandomNumber(_ from: Int, _ to: Int, _ qut: Int?) -> [Int] { var myRandomNumbers = [Int]() var numberOfNumbers = qut let lower = UInt32(from) let higher = UInt32(to + 1) if numberOfNumbers == nil || numberOfNumbers! > (to - from) + 1 { numberOfNumbers = (to - from) + 1 } while myRandomNumbers.count != numberOfNumbers { let myNumber = arc4random_uniform(higher - lower) + lower let intValue = Int(myNumber) if !myRandomNumbers.contains(intValue) { myRandomNumbers.append(intValue) } } return myRandomNumbers } // 生成主集合,省略了无用的单个card变量声明 let mainSetA = Set(generateRandomNumber(1, 53, 5)) print("主集合元素:\(mainSetA)") // 13个待比对集合存入数组 let compareSets: [Set<Int>] = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24], [25, 26, 27, 28], [29, 30, 31, 32], [33, 34, 35, 36], [37, 38, 39, 40], [41, 42, 43, 44], [45, 46, 47, 48], [49, 50, 51, 52] ] // 筛选符合条件的集合(和主集合交集≥2个元素) let matchedSets = compareSets.filter { $0.intersection(mainSetA).count >= 2 } // 判断结果 if matchedSets.count >= 2 { print("存在符合要求的集合,共\(matchedSets.count)个,分别是:\(matchedSets)") } else { print("不存在符合要求的集合") }
逻辑说明
intersection是Set自带的取交集方法,直接可以得到两个集合共有的元素- 如果你需要具体拿到符合条件的集合的索引或者做其他后续操作,直接遍历
matchedSets即可
内容的提问来源于stack exchange,提问作者Ionass
相关产品推荐
相关产品推荐

