题解 | #名字串生成I#
名字串生成I
https://www.nowcoder.com/practice/6544721abdd54f1f938f2a98ac03922a
- 题目考察的知识点 : 字符串
- 题目解答方法的文字分析:
- 果一个字符串 S 可以由另一个字符串 T 重复若干次得到,则 S 的长度一定是 T 长度的整数倍。因此,我们可以先比较两个字符串的长度,将较长的字符串赋值给 str1,较短的字符串赋值给 str2。然后,我们使用 while 循环不断缩短 str2 的长度,直到满足以下条件之一为止:str2 是 str1 的子串;str2 的长度为 0。
- 在每次循环中,我们都调用 check() 函数来检查当前的 str2 是否符合要求。check() 函数的实现方法是:首先判断 str1 的长度是否是 str2 的长度的整数倍;如果不是,则返回 false。否则,我们将 str2 不断地重复,直到其长度与 str1 相等。最后,我们比较 str1 和 str2 是否相等,如果相等则返回 true,否则返回 false。
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param str1 string字符串 # @param str2 string字符串 # @return string字符串 # class Solution: def gcdOfStrings(self, str1: str, str2: str) -> str: if len(str1) < len(str2): str1, str2 = str2, str1 while str2 and not self.check(str1, str2): str2 = str2[:-1] return str2 def check(self, s1: str, s2: str) -> bool: if len(s1) % len(s2) != 0: return False s3 = s2 while len(s1) > len(s2): s2 += s3 return s1 == s2
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路