763 劃分字母區間(Python)

2021-10-25 02:28:45 字數 965 閱讀 5907

字串 s 由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同乙個字母只會出現在其中的乙個片段。返回乙個表示每個字串片段的長度的列表。

示例 1:

輸入:s = 「ababcbacadefegdehijhklij」

輸出:[9,7,8]

解釋:劃分結果為 「ababcbaca」, 「defegde」, 「hijhklij」。

每個字母最多出現在乙個片段中。

像 「ababcbacadefegde」, 「hijhklij」 的劃分是錯誤的,因為劃分的片段數較少。

對於這道題,乙個關鍵點是利用字典key的唯一性來記載乙個字母最大的index是幾。

然後,遍歷字串並跟它比較,用max函式來康康是邊界大還是當前遍歷的這個字母的最大index大,

如果當前遍歷字母的最大index大,那就說明超過了邊界,那就要更新邊界,大概就是這個思路。

結合我說的,康康下面的**哈。

class

solution

:def

partitionlabels

(self, s:

str)

-> list[

int]

:#首先找到每個元素出現的最後位置,字典的形式,通過元素找到下標

last=

#設定區間

start=end=

0#儲存字串的長度

res=

#開始遍歷元素"ababcbacadefegdehijhklij"

for i,c in

enumerate

(s):

#設定尾部

end=

max(end,last[c]

)#當區間裡所有元素都遍歷過

if i==end: 1)

start=i+

1return res

763 劃分字母區間

字串 s 由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同乙個字母只會出現在其中的乙個片段。返回乙個表示每個字串片段的長度的列表。示例 1 輸入 s ababcbacadefegdehijhklij 輸出 9,7,8 解釋 劃分結果為 ababcbaca defegde hijhklij 每...

763 劃分字母區間

示例 1 輸入 s ababcbacadefegdehijhklij 輸出 9,7,8 解釋 劃分結果為 ababcbaca defegde hijhklij 每個字母最多出現在乙個片段中。像 ababcbacadefegde hijhklij 的劃分是錯誤的,因為劃分的片段數較少。注意 s的長度在...

763 劃分字母區間

題目描述 字串 s 由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同乙個字母只會出現在其中的乙個片段。返回乙個表示每個字串片段的長度的列表。示例 1 輸入 s ababcbacadefegdehijhklij 輸出 9,7,8 解釋 劃分結果為 ababcbaca defegde hijhk...