leetcode练习(686) python实现 - Go语言中文社区

leetcode练习(686) python实现


686.Repeated String Match

题目要求:给定两个string字符串A和B,判断是否A通过重复,B能变成A中的一个子集,如果能,返回重复的次数,如果不能,返回-1。
我的思路是:
1. 当B not in A时,就让A+=A(注意这里用A的浅拷贝,只要加上A最初的值就行)count+=1
2. 如果A的长度已经大于B的三倍,还没找到B,说明B是无法成为A中的子集了,返回-1

代码如下:

import copy
class Solution(object):
    def repeatedStringMatch(self, A, B):
        """
        :type A: str
        :type B: str
        :rtype: int
        """
        count = 1
        cp = copy.copy(A)
        while B not in A:
            A += cp
            count += 1
            if len(A) >= 3*len(B):
                return -1
        return count



A ="abababaaba"
B= "aabaaba"
s = Solution()
print(s.repeatedStringMatch(A,B))

结果:
这里写图片描述

最后submit成功:
这里写图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhangwei15hh/article/details/78567206
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 19:45:48
  • 阅读 ( 867 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢