题解 | #名字串生成II#

名字串生成II

https://www.nowcoder.com/practice/a90b0c33344e4b8488fe0b376de3205d

  • 题目考察的知识点 : 字符串
  • 题目解答方法的文字分析:
  1. 实现思路是使用最小公倍数的性质。具体来说,我们可以先计算出两个字符串的长度 len1 和 len2,然后将它们的乘积除以它们的最大公约数得到它们的最小公倍数 lcmLen。因为最小公倍数是最短的重复子串长度的一个上界,所以我们可以将 str1 和 str2 拼接起来,并从左往右依次比较每个字符,判断是否符合要求。
  • 本题解析所用的编程语言: Python
  • 完整且正确的编程代码

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str1 string字符串 
# @param str2 string字符串 
# @return string字符串
#
class Solution:
    def gcd(self , a: int, b: int) -> int:
        if b == 0:
            return a
        else:
            return self.gcd(b, a % b)

    def lcmOfStrings(self, str1: str, str2: str) -> str:
        len1 = len(str1)
        len2 = len(str2)
        lcmLen = len1 * len2 // self.gcd(len1, len2)
        lcmStr = str1 + str2
        for i in range(lcmLen):
            if lcmStr[i % len1] != lcmStr[i % len2]:
                return ""
        return lcmStr[0:lcmLen]
牛客高频top202题解系列 文章被收录于专栏

记录刷牛客高频202题的解法思路

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务