亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python3 無重復(fù)字符的最長子串的實現(xiàn)

 更新時間:2019年10月08日 14:47:33   作者:Joy_917  
這篇文章主要介紹了Python3 無重復(fù)字符的最長子串的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

題目:

給定一個字符串,請你找出其中不含有重復(fù)字符的 最長子串 的長度。

示例:

示例 1:
輸入: “abcabcbb”
輸出: 3
解釋: 因為無重復(fù)字符的最長子串是 “abc”,所以其長度為 3。

示例 2:
輸入: “bbbbb”
輸出: 1
解釋: 因為無重復(fù)字符的最長子串是 “b”,所以其長度為 1。

示例 3:
輸入: “pwwkew”
輸出: 3
解釋: 因為無重復(fù)字符的最長子串是 “wke”,所以其長度為 3。
請注意,你的答案必須是 子串 的長度,“pwke” 是一個子序列,不是子串。

思路:

這道題會很自然的想到暴力解法,就是按位遞增依次檢查子串是否重復(fù),并記下目前最大的子串長度,如果重復(fù)就從下一位索引處的字符開始重新檢查。下面是代碼實現(xiàn):

class Solution:
 def lengthOfLongestSubstring(self, s: str) -> int:
 # 最長子串的長度
 max_len = 0
 # 存放字符的字典
 char_dict = {}
 index = 0
 while s[index:].__len__() >= max_len:
  # 當(dāng)前最長子串長度
  current_len = 0
  for item in s[index:]:
  old_index = char_dict.get(item)
  if old_index is not None:
   index = old_index + 1
   char_dict.clear()
   break
  char_dict[item] = index
  index += 1
  current_len += 1
  if current_len > max_len:
  max_len = current_len
 return max_len

開始只是想跑通,沒想到超出了時間限制??雌饋泶a顯得是有點啰嗦,但是思路應(yīng)該是沒有問題的,我們還是從遍歷的角度來優(yōu)化。

優(yōu)化:

在上面的代碼中,當(dāng)遇到重復(fù)字符時,遍歷的起始點就往后挪一位,但其實兩個重復(fù)字符之間的部分是不會重復(fù)的,比如字符串fbacdadfeed,在第一次從 f 開始遍歷遇到重復(fù)字符即第二個 a 的時候,下一次遍歷不應(yīng)該從 b 開始,而是應(yīng)該從前一個重復(fù)字符的后一個字符即 c 開始。

確定思想,并多次優(yōu)化后的代碼如下:

class Solution:
  def lengthOfLongestSubstring(self, s: str) -> int:
    char_dict = {}
    start, end, max_len = -1, 0, 0
    str_len = s.__len__()
    while end < str_len:
      char = s[end]
      if char in char_dict:
        old_index = char_dict[char]
        if old_index > start:
         start = old_index 
      diff = end -start
      if diff > max_len:
        max_len = diff 
      char_dict[char] = end
      end += 1
    return max_len;

這里使用了內(nèi)置的.__len__()方法來獲取字符串長度而不是len(),并且使用了多個看似多此一舉的臨時變量來存儲值,比如char和diff,都是為了節(jié)省時間,蚊子小也是肉嘛。

結(jié)果也是 ok 的:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用Python 制作二維碼

    利用Python 制作二維碼

    這篇文章主要介紹的是如何利用Python 制作二維碼,文章從介紹python 二維碼制作的第三方庫QRCode 和MyQR展開話題,需要的小伙伴可以參考一下文章的具體內(nèi)容
    2021-09-09
  • django實現(xiàn)悲觀鎖樂觀鎖的項目實踐

    django實現(xiàn)悲觀鎖樂觀鎖的項目實踐

    在Django中,我們可以通過實現(xiàn)悲觀鎖和樂觀鎖來保證數(shù)據(jù)的安全性,本文就來介紹一下django實現(xiàn)悲觀鎖樂觀鎖的項目實踐,感興趣的可以了解一下
    2023-08-08
  • Python numpy.add函數(shù)的具體使用

    Python numpy.add函數(shù)的具體使用

    本文主要介紹了Python numpy.add函數(shù)的具體使用,numpy.add函數(shù)不僅僅是一個簡單的加法操作,更是一個功能強大且高度優(yōu)化的工具,可適用于各種復(fù)雜的數(shù)值計算和數(shù)據(jù)處理任務(wù),感興趣的可以了解一下
    2023-12-12
  • 詳解Python中xlwt庫的基本操作

    詳解Python中xlwt庫的基本操作

    xlwt 是一個用于在Python中操作Excel文件的庫,它允許用戶創(chuàng)建、修改和寫入Excel文件,本文主要為大家介紹了xlwt庫的一些基本操作,需要的可以參考一下
    2023-11-11
  • Python中requests庫的用法詳解

    Python中requests庫的用法詳解

    本文詳細(xì)講解了Python中requests庫的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Python可視化tkinter詳解

    Python可視化tkinter詳解

    這篇文章主要介紹了Python可視化tkinter詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • python用來獲得圖片exif信息的庫實例分析

    python用來獲得圖片exif信息的庫實例分析

    這篇文章主要介紹了python用來獲得圖片exif信息的庫,實例分析了exif-py庫文件的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Django 解決阿里云部署同步數(shù)據(jù)庫報錯的問題

    Django 解決阿里云部署同步數(shù)據(jù)庫報錯的問題

    這篇文章主要介紹了Django 解決阿里云部署同步數(shù)據(jù)庫報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python的Django框架中URLconf相關(guān)的一些技巧整理

    Python的Django框架中URLconf相關(guān)的一些技巧整理

    這篇文章主要介紹了Python的Django框架中URLconf相關(guān)的一些技巧整理,包括視圖配置和debug的示例等,需要的朋友可以參考下
    2015-07-07
  • Python Merge函數(shù)原理及用法解析

    Python Merge函數(shù)原理及用法解析

    這篇文章主要介紹了Python Merge函數(shù)原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09

最新評論