Syntax error Check whether two strings are equivalent or not according to given condition in Python

Check whether two strings are equivalent or not according to given condition in Python



Suppose we have two strings s and t of same size. We have to check whether s and t are equivalent or not. There are few conditions to check:

  • They both are equal. Or,
  • If we divide the s into two contiguous substrings of same size and the substrings are s1 and s2 and also divide t same like, s into t1 and t2, then one of the following should be valid:
    • s1 is recursively equivalent to t1 and s2 is recursively equivalent to t2
    • s1 is recursively equivalent to t2 and s2 is recursively equivalent to t1

So, if the input is like s = "ppqp" t = "pqpp", then the output will be True as if we divide s and t into two parts s1 = "pp", s2 = "qp" and t1 = "pq", t2 = "pp", here s1 = t2 and if we divide s2 and t1 into two parts s21 = "q", s22 = "p", t11 = "p", t12 = "q", here also s21 = t12 and s22 = t11, so they are recursively equivalent.

To solve this, we will follow these steps −

  • Define a function util() . This will take s
  • if size of s is odd, then
    • return s
  • left := util(left half part of s)
  • right := util(right half part of s)
  • return minimum of (left concatenate right), (right concatenate left)
  • From the main method return true when util(s) is same as util(t) otherwise false

Let us see the following implementation to get better understanding −

Example Code

Live Demo

def util(s):
   if len(s) & 1 != 0:
      return s
 
   left = util(s[0:int(len(s) / 2)])
   right = util(s[int(len(s) / 2):len(s)])
 
   return min(left + right, right + left)
 
def solve(s,t):
   return util(s) == util(t)

s = "ppqp"
t = "pqpp"
print(solve(s, t))

Input

"ppqp", "pqpp"

Output

True
Updated on: 2021-01-16T05:09:48+05:30

393 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements