描述:
字串 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...