leetcode hot 100 划分字母区间

763. 划分字母区间

已解答

中等

相关标签

相关企业

提示

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s

返回一个表示每个字符串片段的长度的列表。

复制代码
class Solution(object):
    def partitionLabels(self, s):
        """
        :type s: str
        :rtype: List[int]
        """
        hashmap = {}
        for index , i in enumerate(s):
            if hashmap.get(i)==None:
                hashmap[i]=[index,index]
            else:
                hashmap[i][1] = index

        # 左臂右弼的()
        start = hashmap[s[0]][0]
        end =  hashmap[s[0]][1]
        ans = []
        for i in range(len(s)):
            if i>end:
                ans.append(end - start+1)
                start = i
                end =  hashmap[s[i]][1]

            if hashmap[s[i]][1] > end:
                end = hashmap[s[i]][1]
        ans.append(end-start+1)
        return ans

这个很简单的贪心算法,也就是遍历一遍,然后看看遍历内的东西最远额能到哪里,如果遍历到达了之前的元素到达的最远,那就是一个划分

相关推荐
YGGP7 分钟前
【Golang】LeetCode 56. 合并区间
算法·leetcode·职场和发展
_F_y7 分钟前
回文串系列动态规划附马拉车算法原理及实现
算法·动态规划
你怎么知道我是队长15 分钟前
C语言---排序算法12---计数排序法
c语言·算法·排序算法
fu的博客20 分钟前
【数据结构2】带头结点·单向链表实现
数据结构·算法·链表
近津薪荼22 分钟前
优选算法——前缀和(6):和可被 K 整除的子数组
c++·算法
lifallen23 分钟前
线性基 (Linear Basis)
数据结构·算法
twilight_46926 分钟前
人工智能数学基础——第二章 高等数学基础
人工智能·算法·机器学习
_OP_CHEN29 分钟前
【算法提高篇】(二)线段树之区间修改:懒标记的核心奥义与实战实现
算法·蓝桥杯·线段树·c/c++·区间查询·acm/icpc·懒标记
啊阿狸不会拉杆29 分钟前
《机器学习导论》第 18 章-增强学习
人工智能·python·学习·算法·机器学习·智能体·增强学习
田里的水稻34 分钟前
FA_规划和控制(PC)-D*规划
人工智能·算法·数学建模·机器人·自动驾驶