Wildcard Address-Book Queries
Problem statement
Each address is a four-string row [streetNumber,street,city,state]. For every query with the same four fields, a field equal to * is a wildcard; every other field must match exactly.
Return one boolean per query indicating whether at least one stored address matches. Comparisons are case-sensitive.
Function
queryAddressBook(addresses: String[][], queries: String[][]) → boolean[]Examples
Example 1
addresses = [["1","Main","San Jose","CA"],["1","Main","Austin","TX"]]queries = [["1","Main","San Jose","CA"],["1","Main","San Jose","*"],["1","Main","*","*"],["22","Main","San Jose","CA"]]return = [true,true,true,false]This reproduces the four source query outcomes, with * representing None.
Example 2
addresses = [["10","Oak","Portland","OR"]]queries = [["*","*","*","*"],["10","Oak","Portland","WA"]]return = [true,false]The all-wildcard query matches any address; the wrong state does not.
Example 3
addresses = []queries = [["*","*","*","*"]]return = [false]No query matches an empty address book.
Constraints
0 <= addresses.length, queries.length <= 200000.- Every row contains exactly four nonempty strings; stored address fields never equal
*.