技術實操丨HBase 2.X版本的元資料修復及一種資料遷移方式
阿新 • • 發佈:2020-10-22
字串 S 由小寫字母組成。我們要把這個字串劃分為儘可能多的片段,同一個字母只會出現在其中的一個片段。返回一個表示每個字串片段的長度的列表。
輸入:S = "ababcbacadefegdehijhklij"
輸出:[9,7,8]
解釋:
劃分結果為 "ababcbaca", "defegde", "hijhklij"。
每個字母最多出現在一個片段中。
像 "ababcbacadefegde", "hijhklij" 的劃分是錯誤的,因為劃分的片段數較少。
class Solution { public List<Integer> partitionLabels(String S) { //記錄每個字元最後出現的位置 int[] lastPos = new int[26]; int length = S.length(); for(int i=0;i<length;i++){ lastPos[S.charAt(i)-'a'] = i; } int start=0,end=0; List<Integer> res = new ArrayList<>(); //迴圈遍歷S,每當訪問到一個字元時,end必然會大於等於這個字元的position //當i=end時。當前片段結束 for(int i=0;i<length;i++){ end = Math.max(end,lastPos[S.charAt(i)-'a']); if(i==end){ res.add(end-start+1); start = end+1; } } return res; } }