刷題練習記錄(3)——無重複字符的最長子串(JAVA 和 Python)——set()函數/集合

【題號003】無重複字符的最長子串html

  給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。函數

示例 1:學習

  輸入: "abcabcbb"
  輸出: 3
  解釋: 由於無重複字符的最長子串是 "abc",因此其長度爲 3。
示例 2:spa

  輸入: "bbbbb"
  輸出: 1
  解釋: 由於無重複字符的最長子串是 "b",因此其長度爲 1。
示例 3:code

  輸入: "pwwkew"
  輸出: 3
  解釋: 由於無重複字符的最長子串是 "wke",因此其長度爲 3。
  請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。htm

 

(1)Javablog

【代碼參考】leetcode

【1】【待補全】rem

 

 

 

 

 


 

(2)Python字符串

【方法一:我本身的解法,很是慢……】

# -*- coding:UTF-8 -*-
class Solution(): def lengthOfLongestSubstring(self,s): """ :param s: str :return: int """
        if not s: max=0 else: # sp=s[0]
            sp2 = s[0] max = 1 pcount = 1
            for i in range(1, len(s)): flag = True for j in range(0, len(sp2)): if s[i] == sp2[j]: flag = False sp2 = sp2[j+1:]+s[i] pcount=len(sp2) break
                if flag == True: pcount = pcount + 1 sp2 = sp2 + s[i] if pcount > max: # sp=sp2
                        max = pcount return max

 

【方法二:leetcode的解法,學習一下】

(1)關於set()函數的用法:創建集合,也可使用 '{}' 創建集合,可是空集合只能使用set()函數,由於若使用 '{}' 創建的是一個空字典dict。

【set是一個無序不重複的序列】

具體set()集合函數用法,參考【http://www.javashuo.com/article/p-gpajrcuf-es.html

class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if not s:return 0 left = 0 lookup = set() n = len(s) max_len = 0 cur_len = 0 for i in range(n): cur_len += 1
            while s[i] in lookup: lookup.remove(s[left]) left += 1 cur_len -= 1
            if cur_len > max_len:max_len = cur_len lookup.add(s[i]) return max_len 
相關文章
相關標籤/搜索