美文网首页
leetcode-day10-划分字母区间[763题]

leetcode-day10-划分字母区间[763题]

作者: 孙静静 | 来源:发表于2020-10-22 15:56 被阅读0次
image.png

思路: 先找出每个元素出现的最后位置,这里使用对象的形式存放位置下标,因为对象key值的唯一性,得到一个存放最后下标位置的对象,定义两个指针a, b(变量),a一个用来放最大位置下标的值,b另个用来记录截取字符的开始位置,循环字符串,找出当前字符串的最后位置是否大于前一个最大位置下标,如果小于,则记录这个最大下标a = 最大的那个位置下标,直到循环到了和最大位置下标相等的那个元素,在此处截取字符串

考察的算法思想: 贪心算法 + 双指针

/**
 * @param {string} S
 * @return {number[]}
 */
var partitionLabels = function(S) {
    if(S === null) return null;
    let len = S.length;
    const maxIndex = {};
    for (let i = 0; i < len; i++) { // 用对象来存放每个元素的位置,因为对象属性的唯一性,所以存最后一个位置
        maxIndex[S[i]] = i
    }
    console.log(maxIndex);
    const result = [];
    let start = 0;
    let end = 0;
    // 思路:遍历下字符串,只要当前字符的最后位置大于第一个元素的嘴一个元素的最后位置,就让这个end指向最大的最后位置下标,
    for (let i = 0; i < len; i++) {
        end = Math.max(end, maxIndex[S[i]]);
        console.log(i, end);
        // 这步特别重要,当遍历字符串的时候,遍历到最大的最后位置下标的时候,则该处就是分界线,将位置+1则为该处截取的字符串的长度
        // 下一个截取的字符串从该处+1的位置开始,所以要重置start
        if (i === end) { 
            result.push(end - start + 1);
            start = end + 1;
        }
    }

    return result;
};

相关文章

  • leetcode-day10-划分字母区间[763题]

    思路: 先找出每个元素出现的最后位置,这里使用对象的形式存放位置下标,因为对象key值的唯一性,得到一个存放最后下...

  • 763. 划分字母区间

    这道题的思路是: 1 首先建立一个长度为26的整形数组,用来放每一个字母最后出现的位置,方法就是遍历字符串,自然数...

  • LeetCode 763. 划分字母区间

    763. 划分字母区间 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其...

  • Leetcode763: 划分字母区间

    题目连接?https://leetcode-cn.com/problems/partition-labels/[h...

  • 763. 划分字母区间(Python)

    难度:★★★☆☆类型:字符串方法:逻辑 力扣链接请移步本题传送门[https://leetcode-cn.com/...

  • LeetCode 763. 划分字母区间

    题目 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表...

  • Leetcode_763_划分字母区间_hn

    题目描述 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。...

  • 划分字母区间(美团真题)

    字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表...

  • 贪心十七:划分字母区间

    题目地址: https://leetcode-cn.com/problems/partition-labels/...

  • 划分片段--763

网友评论

      本文标题:leetcode-day10-划分字母区间[763题]

      本文链接:https://www.haomeiwen.com/subject/eonymktx.html