# # 贪心算法,寻找最远的出现位置! LeetCode:763.划分字母区间 # # 给你一个字符串s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 # # 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s 。 # # 返回一个表示每个字符串片段的长度的列表。 # 示例1: # 输入:s = "ababcbacadefegdehijhklij" # 输出:[9, 7, 8] # 解释: # 划分结果为"ababcbaca"、"defegde"、"hijhklij" 。 # 每个字母最多出现在一个片段中。 # 像"ababcbacadefegde", "hijhklij"这样的划分是错误的,因为划分的片段数较少。 # # 示例2: # 输入:s = "eccbbbbdec" # 输出:[10] s = "ababcbacadefegdehijhklij" def get_len_arr(s): dict_s = {} # 记录每个元素最远的index for i in range(len(s)): if s[i] not in dict_s.keys(): dict_s.update({s[i]: i}) else: dict_s[s[i]] = i left = 0 right = 0 res = [] for j in range(len(s)): right = max(right, dict_s[s[j]]) if j == right: res.append(right-left+1) left = right+1 return res print(get_len_arr(s))
14.划分字母区间
最新推荐文章于 2025-05-02 21:55:02 发布