摘要:返回一個表示每個字符串片段的長度的列表。示例輸入輸出解釋劃分結果為。每個字母最多出現在一個片段中。像的劃分是錯誤的,因為劃分的片段數較少。把交叉的區間不斷擴大,然后并保存,最后輸出所有合并后的區間的重點起點。
題目地址:
https://leetcode-cn.com/probl...
題目描述:
字符串 S 由小寫字母組成。我們要把這個字符串劃分為盡可能多的片段,同一個字母只會出現在其中的一個片段。返回一個表示每個字符串片段的長度的列表。
示例 1:
輸入: S = "ababcbacadefegdehijhklij"
輸出: [9,7,8]
解釋:
劃分結果為 "ababcbaca", "defegde", "hijhklij"。
每個字母最多出現在一個片段中。
像 "ababcbacadefegde", "hijhklij" 的劃分是錯誤的,因為劃分的片段數較少。
解答:
這是一個典型的合并區間問題,我們可以記錄每個字符的最小起點和最大終點,這樣每個字符就形成了一個存在區間。把交叉的區間不斷擴大,然后并保存,最后輸出所有合并后的區間的重點-起點+1。
java ac代碼:
class Solution { int[]hashmin = new int["z"+1],hashmax = new int["z"+1]; { for(int i = "a";i <= "z";i++) { hashmin[i] = 9999; hashmax[i] = -1; } } public ListpartitionLabels(String S) { List ans = new ArrayList(1000); for(int i = 0;i < S.length();i++) { char c = S.charAt(i); hashmin[c] = Math.min(hashmin[c],i); hashmax[c] = Math.max(hashmax[c],i); } ArrayList list = new ArrayList(1000); for(int i = 0;i < S.length();i++) if(list.isEmpty()||hashmin[S.charAt(i)] > list.get(list.size()-1)) { list.add(hashmin[S.charAt(i)]); list.add(hashmax[S.charAt(i)]); } else list.set(list.size()-1,Math.max(list.get(list.size()-1),hashmax[S.charAt(i)])); for(int i = 0;i < list.size(); i += 2) ans.add(list.get(i+1)-list.get(i)+1); return ans; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73374.html
摘要:寫在前面今天這篇文章是貪心算法系列的第三篇劃分字母區間。前文回顧貪心算法分發糖果刷題匯總匯總貼今日題目字符串由小寫字母組成。返回一個表示每個字符串片段的長度的列表。示例輸入輸出解釋劃分結果為。每個字母最多出現在一個片段中。 寫在前面 今天這篇文章是貪心算法系列的第三篇--劃分字母區間。 前文回顧: 【LeetCode】貪心算法--分發糖果(135) 刷題匯總: 【LeetCode】匯總...
Problem A string S of lowercase letters is given. We want to partition this string into as many parts as possible so that each letter appears in at most one part, and return a list of integers represe...
摘要:圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的一個圖,寫出一個函數找到所有的最小高度樹并返回他們的根節點。因此使用一個數組代表每個節點的入度,若入度為就是葉子節點。 題目地址:https://leetcode-cn.com/probl...題目描述: 對于一個具有樹特征的無向圖,我們可選擇任何一個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小...
摘要:關于遞歸這里提一兩點遞歸基本有這幾步遞歸的模板,終止條件,遞歸調用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應無所住而生...
閱讀 2771·2021-10-11 11:08
閱讀 1489·2021-09-30 09:48
閱讀 1049·2021-09-22 15:29
閱讀 1037·2019-08-30 15:54
閱讀 976·2019-08-29 15:19
閱讀 527·2019-08-29 13:12
閱讀 3161·2019-08-26 13:53
閱讀 957·2019-08-26 13:28