VOOZH about

URL: https://www.geeksforgeeks.org/dsa/search-a-string-in-the-dictionary-with-a-given-prefix-and-suffix-for-q-queries/

⇱ Search a string in the dictionary with a given prefix and suffix for Q queries - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Search a string in the dictionary with a given prefix and suffix for Q queries

Last Updated : 23 Jul, 2025

Given an array arr[] consisting of N strings and Q queries in form of two strings prefix and suffix, the task for each query is to find any one string in the given array with the given prefix and suffix. If there exists no such string then print "-1".

Examples:

Input: arr[] = {"apple", "app", "biscuit", "mouse", "orange", "bat", "microphone", "mine"}, Queries[] = {{a, e}, {a, p}}
Output:
apple
app
Explanation:
Query 1: String "apple" is the only word in the given dictionary with the given prefix "a" and suffix "e".
Query 2: String "app" is the only word in the given dictionary with the given prefix "a" and suffix "p".

Input: arr[] = {"apple", "app", "biscuit", "mouse", "orange", "bat", "microphone", "mine"}, Queries[] = {{mi, ne}}
Output: mine

Naive Approach: The simplest approach to solve the given problem is to traverse the given array of strings arr[] for each query and if there exists any such string with the given prefix and suffix, then print that string. Otherwise, print "-1".


Output
apple
mine

Time Complexity: O(Q*N*M), where M is the maximum length of the string.
Auxiliary Space: O(1)

Efficient Approach: The above approach can also be optimized by using the Trie Data Structure to solve the problem. The implementation of trie can be modified to support both prefix and suffix search in the following way:

  • Suppose the given word in a dictionary is apple. In this case, the word apple is inserted in the Trie. But to support prefix and suffix search simultaneously the words: e{apple, le{apple, ple{apple, pple{apple, apple{apple can be inserted in the Trie. 
  • Note that these words are of the form suffix{word where suffix is the all suffixes possible from the given word.
  • The special character { is inserted between the suffix and word to separate them. Any special character other than the alphabets can be used in place of {, but { is preferred because its ASCII value is 123 which is one more than the ASCII value of z.

Follow the steps below to solve the problem:

Below is the implementation of the above approach:

Output:
apple
mine

Time Complexity: O(N*M2 + Q*M), where M is the maximum length of among all the strings
Auxiliary Space: O(N*M2)

Comment