题解 | #名字串生成II#
名字串生成II
https://www.nowcoder.com/practice/a90b0c33344e4b8488fe0b376de3205d
- 题目考察的知识点 : 字符串
- 题目解答方法的文字分析:
- 实现思路是使用最小公倍数的性质。具体来说,我们可以先计算出两个字符串的长度 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题的解法思路