Python Program to Check Overlapping Prefix - Suffix in Two Lists


Generally, a prefix is a sequence of characters that appear at the beginning of a string or list or tuple or number, and a suffix is a sequence of characters that appear at the end of a string or number or list or tuple.

For example, when we consider the list [1,2,3,4,5], the prefix is [1,2,3] and the suffix will be [3,4,5]

The prefix and suffix are often used in various programming operations, such as string manipulation, text processing, and data analysis, to refer to specific parts of a sequence.

Checking for overlapping prefixes and suffixes in two lists involves comparing the common elements at the beginning and end of the lists to determine if they overlap or share common elements.

In this article we are going through the different approaches in python to check overlapping prefix or suffix in two lists.

Using Brute Force approach

In the view of problem-solving and algorithm design, the term "brute force" refers to a straightforward and exhaustive approach to solving a problem. It involves trying all possible solutions or checking all possible combinations to find the desired result.

But when it comes to programming, a brute force solution may not be the most efficient or optimized approach, but it is often the simplest and easiest way to implement. It can be a good starting point for solving a problem before exploring more optimized algorithms.

To implement the approach of checking overlap of the prefix and suffix in two lists the following steps to be implemented.

  • Iterate over all possible prefix lengths from 1 to the length of the shorter list.

  • For each prefix length, compare the last prefix_length elements of the first list with the first prefix_length elements of the second list.

  • If there is a match, it means there is an overlapping prefix and suffix. Return True.

  • If no match is found after checking all possible prefix lengths, return False.

def has_overlapping_prefix_suffix(list1, list2):
   shorter_list = min(list1, list2, key=len)
   longer_list = max(list1, list2, key=len)
   for prefix_length in range(1, len(shorter_list) + 1):
      if shorter_list[-prefix_length:] == longer_list[:prefix_length]:
         return True
   return False
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
if has_overlapping_prefix_suffix(list1, list2):
   print("Lists have an overlapping prefix and suffix.")
else:
   print("Lists do not have an overlapping prefix and suffix.")

Output

Lists have an overlapping prefix and suffix.

Using Optimized approach

In the view of problem−solving and algorithm design, an "optimized" approach refers to a solution that is designed to be more efficient and perform better in terms of time and space complexity compared to a brute force solution.

To implement the optimized approach of checking overlap of the prefix and suffix in two lists the following steps to be implemented.

  • Concatenate the two lists to form a new list.

  • Iterate over all possible lengths of the common prefix and suffix (from 1 to half the length of the combined list).

  • For each length, check if the first prefix_suffix_length elements are equal to the last prefix_suffix_length elements.

  • If there is a match, it means there is an overlapping prefix and suffix. Return True.

  • If no match is found after checking all possible lengths, return False.

def has_overlapping_prefix_suffix(list1, list2):
   combined_list = list1 + list2
   for prefix_suffix_length in range(1, len(combined_list) // 2 + 1):
      if combined_list[:prefix_suffix_length] == combined_list[-prefix_suffix_length:]:
         return True
   return False
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
if has_overlapping_prefix_suffix(list1, list2):
   print("Lists have an overlapping prefix and suffix.")
else:
   print("Lists do not have an overlapping prefix and suffix.")

Output

Lists do not have an overlapping prefix and suffix.

Updated on: 19-Oct-2023

108 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements