Leetcode训练(Python3)——3.无重复字符的最长子串(decode错误)

本文探讨了如何寻找字符串中不含有重复字符的最长子串的长度问题,通过示例解析了算法实现过程,包括如何处理不同类型的输入字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

错误:

可能由于decode原因,无法读取输入?AttributeError: 'str' object has no attribute 'decode'

代码:

class Solution:
    def lengthOfLongestSubstring(self, s):
        def takeSecond(elem):
            return elem[1]  # 指定第二个元素排序
        maxunrepeat = 0
        x = list(s)
        dis = [(0, 0)]
        while maxunrepeat < len(x) - dis[-1][0]:
            repeat = [0]
            z = 1
            i = 0
            if x[0] not in x[z:len(x)]:
                vector = [x[1]]
                vector.extend(x)
            else:
                vector = x
            while vector[0] in vector[z:len(vector)]:
                i = i + 1
                repeat += [vector.index(vector[0], z, len(vector))]
                dis += [(repeat[i - 1], repeat[i] - repeat[i - 1])]
                z = vector.index(vector[0], z, len(vector)) + 1
            dis2 = []
            dis2 += dis
            dis2.sort(key=takeSecond, reverse=True)
            for mmm in range(0, len(dis2)):
                www = 0
                newm = []
                newm += vector[dis2[mmm][0] + 1:dis2[mmm][0] + dis2[mmm][1]]
                for i in range(0, len(newm)):
                    if newm.count(newm[i]) - 1:
                        www += 1
                if www == 0:
                    unrepeat = len(newm) + 1
                    maxunrepeat = max(maxunrepeat, unrepeat)
                    break
            for i in range(0, dis[-1][0] + 1):
                del vector[0]
        return maxunrepeat
### 解码操作的 Python 实现 在 Python 中,可以利用多种方法对编码后的字符进行解码。以下是基于提供的引用内容以及相关知识的具体实现。 #### 使用 `base64` 模块进行 Base64 编码和解码 如果目标是对 Base64 编码的字符进行解码,则可以通过 Python 的标准库模块 `base64` 来完成此任务。具体代码如下: ```python import base64 def decode_base64(encoded_string): # 将输入的 Base64 字符转换为字节对象并解码 decoded_bytes = base64.b64decode(encoded_string) # 转换回原始字符 original_string = decoded_bytes.decode(&#39;utf-8&#39;) return original_string # 示例调用 encoded_str = "SGVsbG8gV29ybGQh" # 这是一个 Base64 编码的字符 result = decode_base64(encoded_str) print(result) # 输出应为 Hello World! ``` 上述代码实现了从 Base64 编码到原始 UTF-8 字符的转换[^1]。 --- #### 复杂嵌套字符的解码逻辑 (LeetCode 风格) 对于更复杂的嵌套结构(如 `[num[string]]`),需要通过栈或其他数据结构解析字符中的模式。以下提供了一个通用解决方案: ```python def decode_complex_string(s): stack = [] current_num = 0 current_str = "" for char in s: if char.isdigit(): current_num = current_num * 10 + int(char) elif char == &#39;[&#39;: # 当前状态入栈 stack.append((current_str, current_num)) current_str = "" current_num = 0 elif char == &#39;]&#39;: last_str, num = stack.pop() current_str = last_str + current_str * num else: current_str += char return current_str # 示例调用 complex_encoded_str = "3[a]2[bc]" decoded_result = decode_complex_string(complex_encoded_str) print(decoded_result) # 输出应为 aaabcbc ``` 该函数能够处理类似于 LeetCode 上提到的复杂嵌套字符解码问题[^2]。 --- #### 替换特定子的操作 当涉及简单的字符替换时,可以直接使用 Python 提供的内置方法 `.replace()` 或者正则表达式来进行匹配与替换。例如: ```python def replace_substring(original_str, target, replacement): result = original_str.replace(target, replacement) return result # 示例调用 original = "hello world" target_substr = "world" replacement_substr = "Python" replaced_result = replace_substring(original, target_substr, replacement_substr) print(replaced_result) # 输出 hello Python ``` 此外,在某些情况下可能还需要统计某个子出现次数或者查找大/小字符等内容[^3]。这些功能都可以借助于字符自带的方法轻松实现。 --- ### 总结 以上分别介绍了针对不同类型的编码字符所采用的不同解码方式及其对应的 Python 实现方案。无论是基础的 Base64 解码还是更加复杂的嵌套字符解析,均提供了详尽的例子加以说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值