初初初級演算法

2022-05-15 16:15:52 字數 1151 閱讀 5124

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

示例 1:

輸入: "abcabcbb"

輸出: 3

解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。

示例 2:

輸入: "bbbbb"

輸出: 1

解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。

示例 3:

輸入: "pwwkew"

輸出: 3

解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。

請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。'''

## 自己的解法(看了別人的......)

## 滑動視窗

new_s = set()

max_len = 0

cur_len = 0

left = 0

for i in range(len(s)):

while s[i] in new_s:

new_s.remove(s[left])

left +=1

cur_len-=1

new_s.add(s[i])

cur_len += 1

if cur_len>max_len:max_len=cur_len

print (max_len)

## 另一種解法(研讀中)來自  username:gaussic

st = {}

i, ans = 0, 0

## 遍歷s的索引

for j in range(len(s)):

## 如果s[j] 在字典st中

if s[j] in st:

## 將(字典中key為s中索引為j的值的value,和i之間的最大值) 再賦給i

i = max(st[s[j]], i)

## 將ans 和 s的索引-i+1 二者的最大值賦給ans

ans = max(ans, j - i + 1)\

## 將索引值加1 賦給 st[s[j]]

st[s[j]] = j + 1

print (ans)

題源

Springboot中的定時任務初初初初級

最近剛剛接觸sringboot中的定時任務寫了乙個最最最初階版的定時任務,作如下記錄 首先在啟動類中新增註解 enablescheduling然後就可以直接通過註解 scheduled編寫我們的定時任務了 service public class timeservice 其中,corn值代表每分鐘執...

MySQL初初初入門筆記 2020 6 25

寥寥幾筆 現在是累計什錦式學習mysql部分的第2天 現在把最前頭的記錄都一起傳上來,雖然現在寫的這一塊還是太簡單了,但畢竟配置環境什麼的還是花時間,於是寫一篇記錄一下粗略的學習過程 現在越學越感覺對於相關知識的學習是由 簡單,繁雜 到 深入,簡約 的乙個過程.所以還是有點耐心吧哈哈 資料庫db 資...

Rete演算法初解

rete匹配演算法是一種進行大量模式集合和大量物件集合間比較的高效方法,通過這種方法找出所有匹配各個模式的物件。rete演算法以犧牲記憶體換取高速的策略 rete演算法分為兩個部分 規則編譯 rule compilation 執行時執行 runtime execution 規則編譯 功能 如何在pr...