题目描述
观察最大公因数的性质
若两个字符串前后拼接相等时,表示他们分别由若干个公因子拼接而成,否则不成立。且有,最大公因子长度等于两个字符串长度的最大公因数。
证明可见官方题解:官方题解
class Solution:
def gcdOfStrings(self, str1: str, str2: str) -> str:
# 判断无解
if str1+str2 != str2+str1:
return ""
a = len(str1)
b = len(str2)
# 求长度的最大公约数,即为字符串最大公因子的长度
# 这一步也可以直接调用math.gcd(a,b),此处我自己定义了一个
com = self.gcd(a,b)
return str1[:com]
# gcd(a,b)算法 b==0?a:gcd(b,a%b)
def gcd(self, a, b):
if b == 0:
return a
else:
return self.gcd(b, a%b)