LeetCode 劃分字母區間(貪心策略)

2021-09-21 01:46:38 字數 1028 閱讀 4859

描述:

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

示例 1:

輸入: s = "ababcbacadefegdehijhklij"

輸出: [9,7,8]

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

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

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

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

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

思路分

析:\color

思路分析

:這道題我們採用貪心策略,盡可能讓每乙個子串長度最短。蛋式由於[left ,… minright](left指當前字串的起始下標,minright是s[left]最後出現的下標)中間可能出現某個字元最後出現的下標在minright之外,這時我們就得不斷更新minright,直到left、minright中所有的字元都只出現在這個字串。

class

solution

//第二步:從左到右掃瞄字串,採取貪心策略,一直擴大當前子串的右邊界

int left =

0, right =

0, minright =0;

//當前子串的最小右邊界

while

(left < strsize)

resvec.

push_back

(right - left)

;//當前子串的最小長度

LeetCode 劃分字母區間 763

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

劃分字母區間

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

劃分字母區間

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