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