字串s
由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同乙個字母只會出現在其中的乙個片段。返回乙個表示每個字串片段的長度的列表。
示例 1:
輸入:s = "ababcbacadefegdehijhklij"輸出:[9,7,8]解釋:劃分結果為 "ababcbaca", "defegde", "hijhklij"。注意:每個字母最多出現在乙個片段中。
像 "ababcbacadefegde", "hijhklij" 的劃分是錯誤的,因為劃分的片段數較少。
s
的長度在[1, 500]
之間。
s
只包含小寫字母'a'
到'z'
。
此題關鍵的想法就是找到能分割的條件, 對s的每個字元進行判斷, 看是否此字元是被分割到另乙個字元中。
通過分析題目可以知道, 要求乙個字元只能出現在乙個字串裡, 這裡可以知道第乙個條件:
但是這個條件顯然是不夠的,當出現前面分割的字串沒出現的字元時, 是不是能直接加進去呢? 這是不行的
考慮分割此字串
aaaaabcdaefgh
當判斷b的時候, 首先在前面已經分好的字串aaaaa裡面沒有,符合條件。所以我們把b當做新的分割點。 單著顯然是錯誤的,因為在b後面的字串裡,出現了a, 當我們以b作為分割點的話必定有兩個分割的字串,不符合條件。 所以第二個限制條件:
綜上條件我們可以得到結果
class solution
//如果當前字母在原來的字串裡 就加入進去
if(contain_char.
find
(s[i]
)!= string:
:npos)
else
}//如果後面有字元 就把當前字元加入到前面的字串裡
if(flag)
else}}
re.push_back
(strlen)
;return re;}}
;
此題利用貪心演算法是我對每乙個s的字元, 在能把這個字元分離的情況下。 對每乙個字元進行判斷, 這樣得到的字串的數目應該是最多的 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 每...