LeetCode题解(1071):字符串的最大公因子(Python)
发布日期:2021-06-29 19:55:21
浏览次数:2
分类:技术文章
本文共 944 字,大约阅读时间需要 3 分钟。
题目:(简单)
标签:字符串
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N ) O(N) O(N) | O ( 1 ) O(1) O(1) | 40ms (75.64%) |
Ans 2 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 36ms (92.55%) |
Ans 3 (Python) |
解法一:
def gcdOfStrings(self, str1: str, str2: str) -> str: size1 = len(str1) size2 = len(str2) size = min(size1, size2) for i in range(size, 0, -1): k1 = size1 / i k2 = size2 / i if k1 % 1 == 0 or k2 % 1 == 0: if str1[:i] * int(k1) == str1 and str1[:i] * int(k2) == str2: return str1[:i] else: return ""
解法二:
【思路】
如果存在最大公因字符串,那么str1和str2一定都是最大公约字符串的整数倍,那么str1+str2一定等于str2+str1,所以我们可以通过判断str1+str2是否等于str2+str1来判断是否存在最大公约字符串。
如果存在最大公约字符串,那么如果循环周期小于两字符串长度的最大公约数,那么长度两字符串长度的最大公约数的字符串也一定是一个循环周期,且是最大的循环周期,因此直接返回长尾两字符串长度最大公约数的字符串即可。
def gcdOfStrings(self, str1: str, str2: str) -> str: size = math.gcd(len(str1), len(str2)) if str1 + str2 == str2 + str1: return str1[: size] return ""
转载地址:https://dataartist.blog.csdn.net/article/details/107103468 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月06日 08时00分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C++基础知识一
2019-04-30
C++基础知识二
2019-04-30
百度昆仑芯片独立背后,或向汽车芯片发起进军
2019-04-30
月活达10亿后,未来快手的“无限”可能
2019-04-30
关于回调注销问题的总结
2019-04-30
Android学习开发路线图
2019-04-30
开发Android主攻四大方向
2019-04-30
Android开发方向
2019-04-30
RAW格式
2019-04-30
Android6.0以上文件读写权限
2019-04-30
Android数据文件存储路径
2019-04-30
LINUX下的SD卡分区
2019-04-30
GDB的使用
2019-04-30
USB摄像头到ARM下图像显示方案
2019-04-30
Android消息处理Handler与Message
2019-04-30
驱动开发小结
2019-04-30
Qt Creator创建纯C、c++工程
2019-04-30
Android单元测试之 Robolectric3.0+
2019-04-30
qt configure参数解释
2019-04-30