Policy Violation Set Checks
Problem statement
A request is [user, resource, action]. Three independent deny sets contain blocked users, blocked resources, and blocked actions.
For every request, return true exactly when at least one of its three fields appears in the corresponding deny set. Return the decisions in input order.
Function
findPolicyViolations(blockedUsers: String[], blockedResources: String[], blockedActions: String[], requests: String[][]) → boolean[]Examples
Example 1
blockedUsers = ["u2"]blockedResources = ["secret"]blockedActions = ["delete"]requests = [["u1","public","read"],["u2","public","read"],["u1","secret","read"],["u1","public","delete"]]return = [false,true,true,true]The last three requests each match one deny set.
Example 2
blockedUsers = []blockedResources = []blockedActions = []requests = [["a","b","c"]]return = [false]No deny rule applies.
Example 3
blockedUsers = ["x"]blockedResources = ["r"]blockedActions = ["write"]requests = [["x","r","write"],["y","r","write"]]return = [true,true]A request remains one violation even when several deny sets match.
Constraints
0 <= blockedUsers.length, blockedResources.length, blockedActions.length <= 100000.1 <= requests.length <= 100000.- Every request contains exactly three nonempty strings.
- Identifiers contain 1 to 40 visible ASCII characters.
- Each deny-set input contains unique values.