根据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(lefthalfpartofs)
对:=util(righthalfpartofs)
返回(左连接右),(右连接左)的最小值
从主方法返回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