华为OD机试真题2023_Swift_100_异常的打卡记录

// 异常的打卡记录
    func HW2023027() {
        struct Record {
            var staffId: Int
            var time: Int
            var distance: Int
            var actualId: String
            var registerId: String
            
            func toString() -> String {
                let temp = [String(self.staffId), String(self.time), String(self.distance), self.actualId, self.registerId]
                return temp.joined(separator: ",")
            }
        }
        var inputArr: [String] = []
        // 测试用例
//        inputArr = ["100000,10,1,ABCD,ABCD", "100000,50,10,ABCD,ABCD"]
//        inputArr = ["100000,10,1,ABCD,ABCD", "100000,80,10,ABCE,ABCD"]
        inputArr = ["100000,10,1,ABCD,ABCD", "100001,80,10,ABCE,ABCE"]
        // 开始代码
//        while let line = readLine() {
//            inputArr.append(line)
//        }
        var arr: [Record] = []
        for str in inputArr {
            let tempArr = str.components(separatedBy: ",")
            if tempArr.count == 5 {
                let rec: Record = Record(staffId: Int(tempArr[0])!, time: Int(tempArr[1])!, distance: Int(tempArr[2])!, actualId: tempArr[3], registerId: tempArr[4])
                arr.append(rec)
            }
        }
        var resArr: [String] = []
        for (i,rec1) in arr.enumerated() {
            if rec1.actualId != rec1.registerId { // 判断是设备与注册设备是否一致
                resArr.append(rec1.toString())
                continue
            }
            for j in (i+1)..<arr.count {
                let rec2 = arr[j]
                if rec2.staffId != rec1.staffId {// 判断两工号是否一致
                    continue
                }
                let timeD = abs(rec1.time - rec2.time) // 两次打卡时间间隔
                let distanceD = abs(rec1.distance - rec2.distance) // 两次打卡距离
                if timeD<60 && distanceD>5 {
                    resArr.append(rec1.toString())
                    resArr.append(rec2.toString())
                    break
                }
            }
        }
        if resArr.count == 0 {
            print("null")
        }else {
            print(resArr.joined(separator: ";"))
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容