题解 | #名字串生成I#

名字串生成I

https://www.nowcoder.com/practice/6544721abdd54f1f938f2a98ac03922a

  • 题目考察的知识点 : 字符串
  • 题目解答方法的文字分析:
  1. 果一个字符串 S 可以由另一个字符串 T 重复若干次得到,则 S 的长度一定是 T 长度的整数倍。因此,我们可以先比较两个字符串的长度,将较长的字符串赋值给 str1,较短的字符串赋值给 str2。然后,我们使用 while 循环不断缩短 str2 的长度,直到满足以下条件之一为止:str2 是 str1 的子串;str2 的长度为 0。
  2. 在每次循环中,我们都调用 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题的解法思路

全部评论

相关推荐

04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务