最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

題目:

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

示例:

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

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

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

思路:

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

開始只是想跑通,沒想到超出了時(shí)間限制。看起來代碼顯得是有點(diǎn)啰嗦,但是思路應(yīng)該是沒有問題的,我們還是從遍歷的角度來優(yōu)化。

優(yōu)化:

在上面的代碼中,當(dāng)遇到重復(fù)字符時(shí),遍歷的起始點(diǎn)就往后挪一位,但其實(shí)兩個(gè)重復(fù)字符之間的部分是不會重復(fù)的,比如字符串fbacdadfeed,在第一次從 f 開始遍歷遇到重復(fù)字符即第二個(gè) a 的時(shí)候,下一次遍歷不應(yīng)該從 b 開始,而是應(yīng)該從前一個(gè)重復(fù)字符的后一個(gè)字符即 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(),并且使用了多個(gè)看似多此一舉的臨時(shí)變量來存儲值,比如char和diff,都是為了節(jié)省時(shí)間,蚊子小也是肉嘛。

結(jié)果也是 ok 的:

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

相關(guān)文章

  • 如何在python中用os模塊實(shí)現(xiàn)批量移動文件

    如何在python中用os模塊實(shí)現(xiàn)批量移動文件

    在工作中難免會遇到需要批量整理文件的情況,當(dāng)需要從一堆文件中將部分文件批量地轉(zhuǎn)移時(shí),如果手工一一轉(zhuǎn)移難免浪費(fèi)時(shí)間,這篇文章主要給大家介紹了關(guān)于如何在python中用os模塊實(shí)現(xiàn)批量移動文件的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作之京東評論分類

    Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作之京東評論分類

    自然語言處理( Natural Language Processing, NLP)是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的各種理論和方法
    2021-10-10
  • 對python3 urllib包與http包的使用詳解

    對python3 urllib包與http包的使用詳解

    今天小編就為大家分享一篇對python3 urllib包與http包的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 解決python matplotlib imshow無法顯示的問題

    解決python matplotlib imshow無法顯示的問題

    今天小編就為大家分享一篇解決python matplotlib imshow無法顯示的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn)

    Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn)

    這篇文章主要介紹了Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 用python3讀取python2的pickle數(shù)據(jù)方式

    用python3讀取python2的pickle數(shù)據(jù)方式

    今天小編就為大家分享一篇用python3讀取python2的pickle數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • PyQt中實(shí)現(xiàn)自定義工具提示ToolTip的方法詳解

    PyQt中實(shí)現(xiàn)自定義工具提示ToolTip的方法詳解

    這篇文章主要為大家詳細(xì)介紹了PyQt中實(shí)現(xiàn)自定義工具提示ToolTip的方法詳解,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • Django框架靜態(tài)文件使用/中間件/禁用ip功能實(shí)例詳解

    Django框架靜態(tài)文件使用/中間件/禁用ip功能實(shí)例詳解

    這篇文章主要介紹了Django框架靜態(tài)文件使用/中間件/禁用ip功能,結(jié)合實(shí)例形式詳細(xì)分析了Django框架靜態(tài)文件的使用、中間件的原理、操作方法以及禁用ip功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • Python基礎(chǔ)之畫圖神器matplotlib

    Python基礎(chǔ)之畫圖神器matplotlib

    這篇文章主要介紹了python基礎(chǔ)之畫圖神器matplotlib,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • flask post獲取前端請求參數(shù)的三種方式總結(jié)

    flask post獲取前端請求參數(shù)的三種方式總結(jié)

    這篇文章主要介紹了flask post獲取前端請求參數(shù)的三種方式總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

黄平县| 苏尼特左旗| 广平县| 乐山市| 漯河市| 常德市| 金沙县| 兰西县| 左贡县| 玛多县| 赤峰市| 玛沁县| 日土县| 黄大仙区| 海安县| 叶城县| 廉江市| 交口县| 剑川县| 宣城市| 乐都县| 南召县| 玉树县| 彰化县| 泰和县| 临湘市| 美姑县| 汝州市| 武穴市| 淮滨县| 密云县| 通许县| 尉氏县| 米林县| 大石桥市| 乐安县| 随州市| 长兴县| 额尔古纳市| 望都县| 察哈|