class Solution:
def partitionLabels(self, s: str) -> List[int]:
hash=[0]*26#用来记录26个字母最远出现的index
for i in range(len(s)):
hash[ord(s[i])-ord('a')]=i#[]内对应的某个字母,i表示该字母在s中出现的最远位置
res=[]
left,right=0,0
for i in range(len(s)):
right=max(right,hash[ord(s[i])-ord('a')])#不断更新出现的最远位置。
if i==right:#当i到达right意味着此前重复出现的字母已经到达了最后出现的位置,此后不会再出现
res.append(right-left+1)#添加该长度
left=right+1#此时left需要更新为right+1。便于统计下一个的长度
return res
leetcode763
最新推荐文章于 2022-03-18 10:04:14 发布