力扣演算法題 第三題
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
def test_func(s):
d = {}
start = 0
ret = 0
str_start = 0
for k, v in enumerate(s):
if v in d:
start = max(start, d[v]+1)
d[v] = k
if ret < k-start+1:
ret = k-start+1
str_start = start
return ret, (s[str_start:str_start+ret])
**解釋:
字典d :儲存字串元素的位置
start:最長字串起始位置(計算使用)
ret:返回最長長度
str_start:最長字串起始位置(返回結果使用)
遍歷整個字串
for k, v in enumerate(s):
不重複的情況:
start=0,表示字串第乙個元素
d[v] = k
d[v] = k,元素跟位置資訊建立對映關係
「abc」,得到d =
if ret < k-start+1:
ret = k-start+1
str_start = start
k-start+1 計算最新的最長
跟之前的長度比較 超過之前的長度ret,更新資料
更新返回子字串的起始位置 str_start
出現重複情況:
if v in d:
start = max(start, d[v]+1)
start 起始位置更新到重複元素的後一位,例如「abca」,start = d』a』+1,即a後面乙個位置』b』
d[v] = k
if ret < k-start+1:
ret = k-start+1
str_start = start
字典d更新,d[『a』] = k(值為3) d =
下次遇到』a』,則start移動到』a』的下一位,即start = 4
重新計算長度 k-start+1=3,不超過之前的長度,ret和str_start 都不改變
迴圈結束後
return ret, (s[str_start:str_start+ret])
返回長度以及不重複的子串 日常刷題 (1)
牛客刷題 1.有關類的說法不正確的是 d a.類是一種使用者自定義的資料型別 b類中的成員函式可以訪問類中的私有資料 c在類中,如果不作特別說明,所有的資料均為私有型別 d在類中,如果不作特別說明,所有的成員函式均為公有型別 解析 在c 中,類預設的方式時private,不管是繼承方式還是成員。2....
日常刷題04
題目 本題要求實現乙個函式,可統計任一整數中某個位數出現的次數。例如 21252中,2出現了3次,則該函式應該返回3。輸入樣例 21252 2 輸出樣例 3思路 這題非常簡單,只需要把輸入的數分開儲存在乙個陣列中,然後就只需要遍歷陣列,數出與題目所給數字相同的數字即可。下面是 include int...
LeetCode日常刷題1 657 717 67
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 解答class solution map.put ta...