• LeetCode-0312


    1071.字符串的最大公因子

    def gcdOfStrings(str1,str2):
        #反向查找,找到可以被整除的子串长度,判断子串是否满足多次连接
        for i in range(min(len(str1),len(str2)),0,-1):
            print(i,str1[:i])
            if len(str1)%i ==0 and len(str2)%i ==0:
                if str1[:i]*(len(str1)//i) == str1 and str1[:i]*(len(str2)//i) == str2:
                    return str1[:i]
        return ""
    
    #如果 str1 和 str2 拼接后等于 str2和 str1 拼接起来的字符串(注意拼接顺序不同),那么一定存在符合条件的字符串 X
    def gcdOfStrings(str1,str2):
        import math
        gcd = math.gcd(len(str1),len(str2))
        substr = str1[:gcd]
        if str1 + str2 == str2+str1:
            return substr
        return ""
    

    3.无重复字符的最长子串

    def lengthOfLongestSubstring(s):
        if s:
            left,right = 0,1
            maxlen =0
            dic = []
            dic.append(s[left])#存储已经见过的字符
            while left<=right and right<len(s):
    #             print(dic,left,right,maxlen)
                if s[right] not in dic:#判断是否出现过
                    dic.append(s[right])
                    maxlen = max(right-left+1,maxlen)
                    right += 1
                else:
                    index = dic.index(s[right])
                    left += index+1     #出现过,移动left跳过该值
                    dic = dic[index+1:]  #更新
            return maxlen
        else:
            return 0
    
    s = "pwwkew"
    lengthOfLongestSubstring(s)
    

    输出:

    ['p'] 0 1 0
    ['p', 'w'] 0 2 2
    [] 2 2 2
    ['w'] 2 3 2
    ['w', 'k'] 2 4 2
    ['w', 'k', 'e'] 2 5 3
    ['k', 'e'] 3 5 3

  • 相关阅读:
    SQL中的escape 将通配符 变成普通符号
    shell 变量
    vi 常用命令
    Java 内存模型基础
    Linux 的文件权限与目录配置
    Mybatis 源码分析之事物管理
    Mybatis 源码分析之一二级缓存
    Mybatis源码分析之结果集处理
    从JDBC看Mybatis的设计
    Mybatis源码分析之插件的原理
  • 原文地址:https://www.cnblogs.com/gongyanzh/p/12470484.html
Copyright © 2020-2023  润新知