python题:用于找出给定字符串中最长的不重复子字符串的长度

def length_of_longest_substring(str):
    start = maxLength = 0
    usedChar = {}

    for i, char in enumerate(str):
        if char in usedChar and start <= usedChar[char]:
            start = usedChar[char] + 1
        else:
            maxLength = max(maxLength, i - start + 1)

        usedChar[char] = i

    return maxLength


if __name__ == '__main__':
    str = 'ajfdklserjkewrjlkewaaabbbbddkkkkf'
    print(length_of_longest_substring(str))
  1. 定义一个函数 length_of_longest_substring,它接受一个字符串 str 作为参数。

  2. 在函数内部,初始化三个变量:

    • start:用来记录当前不重复子字符串的起始位置,初始值为0。
    • maxLength:用来记录最长不重复子字符串的长度,初始值为0。
    • usedChar:一个字典,用来记录每个字符最近一次出现的位置。
  3. 使用 enumerate 函数遍历字符串 strenumerate 函数会返回字符串中每个字符及其索引。

  4. 对于字符串中的每个字符 char

    • 如果 char 已经在 usedChar 字典中,并且它的位置大于或等于 start,则更新 start 的值为 usedChar[char] + 1。这表示从下一个位置开始寻找新的不重复子字符串。
    • 否则,计算当前不重复子字符串的长度(i - start + 1),并与 maxLength 比较,取较大值作为新的 maxLength
  5. 更新 usedChar 字典,将当前字符 char 的位置设置为 i

  6. 遍历结束后,返回 maxLength,即最长的不重复子字符串的长度。

通过这种方式,代码能够找出字符串中最长的连续不重复子字符串的长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值