Split Two Strings to Make Palindrome Using Python



Suppose we have two strings a and b whose length are same. We have to select an index and split both strings at that selected index, splitting a into two strings: a_pref and a_suff where a = a_pref | a_suff, and splitting b into two strings: b_pref | b_suff (| is concatenation operator) where b = b_pref + b_suff. Check if a_pref + b_suff or b_pref + a_suff forms a palindrome or not. (Any split may be an empty string)

So, if the input is like a = "pqrst" b = "turqp", then the output will be True because we can split a like ["pq", "rst"] and b like ["tu", "rqp"], so if we join a_pref with b_suff, we will get "pqrqp" which is a palindrome.

To solve this, we will follow these steps −

  • for each pair (x, y) from list of pairs [(a, b), (b, a)], do

    • i := 0, j := size of x - 1

    • while x[i] is same as y[j] and i < size of x and j > 0, do

      • i := i + 1

      • j := j - 1

    • midx := substring of x from index i to j

    • midy := substring of y from index i to j

    • if midx is palindrome or midy is palindrome, then

      • return True

  • return False

Example

Let us see the following implementation to get better understanding −

Open Compiler
def solve(a, b): for x, y in [[a, b], [b, a]]: i, j = 0, len(x) - 1 while x[i] == y[j] and i<len(x) and j>0: i += 1 j -= 1 midx = x[i:j+1] midy = y[i:j+1] if (midx == midx[::-1] or midy== midy[::-1]): return True return False a = "pqrst" b = "turqp" print(solve(a, b))

Input

"pqrst", "turqp"

Output

True
Updated on: 2021-10-05T14:24:40+05:30

760 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements