763 劃分字母區間

2021-10-09 07:03:27 字數 927 閱讀 5114

題目描述:

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

示例 1:

輸入:s = 「ababcbacadefegdehijhklij」

輸出:[9,7,8]

解釋:

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

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

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

s的長度在[1, 500]之間。

s只包含小寫字母 『a』 到 『z』 。

方法1:

主要思路:

(1)先掃一遍原來的字串,找出每個字元出現的最右邊的邊界;

(2)再次掃一遍字串,不停的擴充套件當前範圍的右邊界,直到不能擴充套件,獲得乙個片段;

(3)擴充套件的過程,統計當前片段的字元的個數;

class

solution

;//獲得每個字元的出現的最右側位置

for(

int i=

0;isize()

;++i)

int count=0;

vector<

int> res;

//再次掃瞄,合併區間

for(

int i=

0;isize()

;++i)

res.

push_back

(count+1)

;//壓入當前片段的長度

}return 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 由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同乙個字母只會出現在其中的乙個片段。返回乙個表示每個字串片段的長度的列表。可以統計字串中每個字元的最後出現位置,然後使用雙指標start和end從字串頭開始,由於同一字母只能出現在其中乙個片段,所以end max end,index s...