Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func GetRejectedRequests(requests: [String], limit_per_second: Int) -> [Int] {
- var accepted: [String:[Int]] = [:]
- var rejected: [Int] = []
- outerloop: for request in requests {
- let requestSplitted = request.components(separatedBy: " ")
- guard requestSplitted.count == 3 else {
- continue
- }
- let ipRequests = accepted[requestSplitted[1]]
- let timestamp: Int = Int(requestSplitted[2]) ?? 0
- let id: Int = Int(requestSplitted[0]) ?? 0
- guard let ipRequests else {
- accepted[requestSplitted[1]] = [timestamp]
- continue
- }
- var count = 1
- for last in ipRequests {
- if timestamp - last >= 1000 {
- accepted[requestSplitted[1]]?.append(timestamp)
- continue outerloop
- } else {
- count += 1
- }
- }
- if count <= limit_per_second {
- accepted[requestSplitted[1]]?.append(timestamp)
- continue
- }
- rejected.append(id)
- }
- return rejected
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement