zoukankan      html  css  js  c++  java
  • *3. Longest Substring Without Repeating Characters

    1. 原始题目

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

    示例 1:

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

    示例 2:

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

    示例 3:

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

    2. 我的解法

    每次都寻找不同的字符放到空表里,直到有相同的出现。这时指针指向下一位进行下一轮搜索。

     1 class Solution:
     2     def lengthOfLongestSubstring(self, s: str) -> int:
     3         if not s: return 0
     4         temp = []
     5         results = 0
     6         i = j = 0         # 最长无重复字符串的首尾指针
     7         while (i<len(s)) and (j<len(s)):
     8             j = i
     9             while (j<len(s)) and (s[j] not in temp):
    10                 temp.append(s[j])        # 加入新的无重复字符
    11                 j = j + 1
    12             if len(temp)>results:
    13                 results = len(temp) 
    14             temp =[]                     # 置空列表 
    15             i = i+1
    16         return results

    我的时间复杂度比较高,新建立许多变量,导致空间占用较多。Leetcode上另一个python解法是在原无重复字符串上操作,比较简洁:

     1 class Solution:
     2     def lengthOfLongestSubstring(self, s: str) -> int:
     3         cur, longest = [], 0
     4         for i in s:             # 串中每个元素
     5             if i in cur:            # 如果出现在表里了则只取其之后的所有字符,这点是最核心的
     6                 cur = cur[cur.index(i)+1:]  # if repeating, only keep the substring after that repeated letter
     7                 cur.append(i)
     8             else:
     9                 cur.append(i)       # 无重复则加入
    10             longest = max(longest, len(cur))
    11         return longest 
  • 相关阅读:
    unittest单元测试框架之unittest工作原理(一)
    unittest单元测试框架之unittest案例(二)
    mysql 查询导出(txt,csv,xls)
    JS 无限长form表单提交
    PHP设计模式的六大设计原则
    MySql 双主多从配置指导
    MySQL5.7开多实例指导
    MySQL主从复制配置指导及PHP读写分离源码分析
    《单元测试之道Java版》的读书笔记
    《重构》的读书笔记–方法列表
  • 原文地址:https://www.cnblogs.com/king-lps/p/10675464.html
Copyright © 2011-2022 走看看