Leetcode 763 劃分字母區間

2021-10-14 16:25:35 字數 1152 閱讀 1349

問題重述

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

示例:輸入:s = 「ababcbacadefegdehijhklij」 輸出:[9,7,8]

解釋:劃分結果為 「ababcbaca」, 「defegde」, 「hijhklij」。每個字母最多出現在乙個片段中。像 「ababcbacadefegde」, 「hijhklij」 的劃分是錯誤的,因為劃分的片段數較少。

思路

只需要乙個大小為26的陣列last,通過一次迴圈記下每乙個字元出現的末尾位置。即last[s(i) – 『a] = i;即陣列第乙個表示字元a,第二個表示b等等。

for

(int i=

0; i < n; i++

)

所以第二個迴圈記下,start和end兩個變數。

比如s的第乙個字元是a,a出現的start是 1 , end是10.第二個字元是b,b出現的 start 是 2,end是11.那麼這個時候,end就需要更新為11.一次類推一直到i 等於 end,

for

(int i=

0; i < n; i++

)}

說明滿足結果,這個串包含的字元在其他串中不出現,因為start和end都在這裡面。

例子:abcabcdede,初始start=end=0;第乙個字元a,end更新為4.第二個字元b,end更新為5,第三個字元c,end更新為6.一直到i=6的時候都沒有更新。此時,i == end,所以前六個字元是乙個串。

最終**

class

solution

vector<

int> answer;

int start =

0, end =0;

for(

int i=

0; i < n; i++)}

return answer;}}

;

Leetcode 763 劃分字母區間

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

Leetcode763 劃分字母區間

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

Leetcode 763 劃分字母區間

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