Open In App

Python | Merging two strings with Suffix and Prefix

Improve
Improve
Like Article
Like
Save
Share
Report

Given two strings A and B and these strings contain lower case letters. The task is to tell the length of the merged strings. For example, given A is “abcde” and B is “cdefg”, then merging the two strings results in “abcdefg”. The merge operation is performed in such a manner that the joining characters are both the suffix of A and Prefix of B. Before merging you are allowed to do any ONE of the following operations:

  1. Reverse string A
  2. Reverse string B

Examples:

Input :
A = "ababc"
B = "bcabc" 
Output :
Length is 8

the suffix of string A i.e "bc" and prefix of B i.e "bc" is the same
so the merged string will be "ababcabc" and length is 8.

Input :
A = "cdefg"
B = "abhgf"
Output :
Length is 8

the suffix of string A i.e "fg" and prefix of  reversed B i.e "fg" is the same
so the merged string will be "cdefghba" and length is 8

Input :
A = "wxyz"
B = "zyxw"
Output :
Length is 4

Below is the Python code implementation of the above mentioned approach. 

Python3




# function to find the length of the
# merged string
 
def mergedstring(x, y) :
     
    k = len(y)
    for i in range(len(x)) :
         
        if x[i:] == y[:k] :
            break
        else:
            k = k-1
 
    # uncomment the below statement to
    # know what the merged string is
    # print(a + b[k:])
    return len(a + b[k:])
 
# function to find the minimum length
# among the  merged string
def merger(a, b):
    # reverse b
    b1 = b[::-1]
 
    # function call to find the length
    # of string without reversing string 'B'
    r1 = mergedstring(a, b)
 
    # function call to find the length
    # of the string by reversing string 'B'
    r2 = mergedstring(a, b1)
 
    # compare between lengths
    if r1 > r2 :
        print("Length is", r2)
    else :
        print("Length is", r1)
             
# driver code
a = "abcbc"
b = "bcabc"
 
merger(a, b)


Output:

Length is 8

Time complexity: O(n^2) where n is the length of the longer string between a and b.
Auxiliary space: O(1) as we are not using any data structures to store intermediate results.



Last Updated : 22 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads