日常刷題 1

2021-09-25 07:12:34 字數 1353 閱讀 3619

力扣演算法題 第三題

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

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...