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; };
执行结果: