LeetCode 10.22每日一题763. 划分字母区间【中等】

10.22每日一题763. 划分字母区间:https://leetcode-cn.com/problems/partition-labels/

思路:本题我感觉还是有一定难度的。基本思路是使用递归。 官方题解使用 贪心算法+双指针

代码:

/**
 * @param {string} S
 * @return {number[]}
 */
var partitionLabels = function(S) {
    var stack = [];
    var maxlen = -1;
    var i = 0;
    var getlabel = function(start, end) {
        for (var i = start; i < end; i++) {
            var n = S.lastIndexOf(S[i]);
            if (maxlen < n) {
                maxlen = n;
                getlabel(i + 1, n);
            }
        }
    }
    while (i < S.length) {
        if (i == S.lastIndexOf(S[i])) {
            stack.push(1);
        } else {
            getlabel(i, S.lastIndexOf(S[i]));
            stack.push(maxlen - i + 1);
            i = maxlen;
        }
        i++;
    }
    return stack;
};

执行结果:

 

posted @ 2020-10-22 20:08  梁涛999  阅读(64)  评论(0编辑  收藏  举报