 GFG App
Open App Browser
Continue

# Python | Merging two strings with Suffix and Prefix

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.

My Personal Notes arrow_drop_up