根据Python中的给定条件检查两个字符串是否相等

假设我们有两个大小相同的字符串s和t。我们必须检查s和t是否相等。需要检查的条件很少:

  • 他们俩是平等的。要么,

  • 如果我们将s分为两个大小相同的连续子串,并且子串分别为s1和s2,并且还像s一样将t分为t1和t2,那么下列其中一项应该是有效的:

    • s1递归等效于t1,而s2递归等效于t2

    • s1递归等效于t2,而s2递归等效于t1

因此,如果输入像s =“ ppqp” t =“ pqpp”,那么输出将为True,就好像我们将s和t分为两部分一样s1 =“ pp”,s2 =“ qp”和t1 =“ pq “,t2 =” pp“,这里s1 = t2,如果我们将s2和t1分为两部分,则s21 =” q“,s22 =” p“,t11 =” p“,t12 =” q“,此处s21 = t12和s22 = t11,因此它们是递归等效的。

为了解决这个问题,我们将遵循以下步骤-

  • 定义功能 util()。这将花费

  • 如果s的大小为奇数,则

    • 返回s

  • 左:= util(left half part of s)

  • 对:= util(right half part of s)

  • 返回(左连接右),(右连接左)的最小值

  • 从主方法返回true时 util(s) 与...相同 util(t) 否则为假

让我们看下面的实现以更好地理解-

范例程式码

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))

输入值

"ppqp", "pqpp"
输出结果
True