leetcode 763 划分字母区间

思路:

主要思路还是利用JAVA的s.lastIndexOf(char)  用这个来从右到左寻找字符c出现的最后一个位置end,

然后循环寻找 刚才字符的下一个字符最后出现的位置

直到寻找到最长end 

class Solution {
    public List partitionLabels(String S) {
        List l = new ArrayList<>();
        int n = S.length();
        char [] c = S.toCharArray();
        for(int i = 0; i < n ; i ++)
        {
            int item = i;
            int end = S.lastIndexOf(c[i]);
            while(i < end)
            {
                i ++;
                end = Math.max(S.lastIndexOf(c[i]), end);
            }
            l.add(end - item + 1);
            i = end;
        }
        return l;
    }
}

 

你可能感兴趣的:(leetcode 763 划分字母区间)