• Python每日一练--LEETCODE--重复子字符串


    方法一:::::

    ###重复的子字符串,思路:暴力法,遍历字符串的长度。然后使用滑动窗口的思想,
    # 思考一下,字符串特点,如果一个子字符串重复构成一个字符串,那这个子字符串的长度一定能被字符串长度整除
    #多次重复构成,子字符串长度不能超过字符串长度一半,子字符串长度最大长度是字符串长度的一半
    #基于限制条件,优化暴力法
    def repeatedSubstringPattern(s):
        possiblelen=[] ##建立一个list,用于放置子字符串可能的长度
        n=len(s) ###计算字符串长度
        for i in range (1,n//2+1): ###计算子字符串可能的长度,因为是长度,所以i开始值是1,i的最大值是字符串长度的一半
            if n%i==0: ###能被整除,就是子字符串长度的取值
                possiblelen.append(i)  ###存放置list中
        for i in possiblelen:  ###已知子字符串长度,使用滑动窗口思想,遍历list所有取值
            base=s[:i]  ###子字符串
            for j in range(n-i+1): ###滑动窗口思想,滑动范围是 字符串长度减去子字符串长度
                if s[j:j+i]!=base:
                    break
                if j==n-i:
                    return True
        return False
    print(repeatedSubstringPattern("aba"))
    方法二:

    官方的做法,看不懂,有看懂的可以解释一下,谢谢

    ###切片是是个左闭右开的取值。闭是能取到那个值,开是不能取到那个值
    #####   !=-1表明包含此字符串。若是==-1,则表明不包含字符串
    

    ###目前的理解就是 将字符串duble一下,掐头去尾 还能找到原字符串,则这个原字符串就是符合条件,由一个子字符串重复组成的

    def repeatedSubstringPattern(s):
        return (s+s)[1:len(s)*2-1].find(s)!=-1
    
    print(repeatedSubstringPattern("abcab"))
  • 相关阅读:
    JavaSE_Java实现开散列哈希桶,测试重载hashCode方法
    2. java基础
    前端设计模式之【工厂模式】
    GIS工具maptalks开发手册(二)03-02——示例之json格式添加绘制工具、渲染点、文字和多个面
    centos 安装 percona-xtrabackup
    Nginx + Keepalived 高可用集群部署
    3d可视化智慧园区设计成本
    Python大文本文件按行数分割成多个小文本文件
    linux 普通挂载/LVM挂载/LVM扩容
    利用无人机图像进行大豆田杂草检测的实例分割方法
  • 原文地址:https://blog.csdn.net/hqq1990/article/details/136483432