FastPrepWildcard Address-Book Queries

Wildcard Address-Book Queries

Google logoGoogle● MediumNEW GRADPHONE SCREEN
Learn

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 *.

More Google problems

See Google hiring insights
public boolean[] queryAddressBook(String[][] addresses, String[][] queries) {
    // Write your code here.
}
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"]]
expected[true,true,true,false]
Checking account…