1. 程式人生 > 實用技巧 >技術實操丨HBase 2.X版本的元資料修復及一種資料遷移方式

技術實操丨HBase 2.X版本的元資料修復及一種資料遷移方式

字串 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;
    }
}