见注释。
class Solution:
def gcdOfStrings(self, str1: str, str2: str) -> str:
# 这个最大公约数。如果存在,取值范围一定是 [1, mn+1] 前开后闭。
if str1 == str2:
return str1
mn, mx = sorted([str1, str2])
if mn not in mx:
return ""
i = len(mn) + 1
while i > 0 :
# 如果此时我已经截取了一段, 那么这段长度占据总长度的多少呢
# 总长度 = 单位长度 * 多少个单位。
# 就是用理论上可以等分的结果与实际结果来比较。
if mn[:i] * int(len(mn) / i) == mn and mx[:i] * int(len(mx) / i) == mx:
# print(i, mn[:i], len(mn) / i)
return mn[:i]
i -= 1
else:
return ""
网友评论