Merge pull request #1901 from ZerenZhang2022/patch-9

Update 0763.划分字母区间.md
This commit is contained in:
程序员Carl
2023-02-21 10:06:33 +08:00
committed by GitHub

View File

@ -276,6 +276,33 @@ class Solution:
# 最右侧区间字符串长度为1时的特殊情况也包含于其中 # 最右侧区间字符串长度为1时的特殊情况也包含于其中
res.append(right - left + 1) res.append(right - left + 1)
return res return res
# 解法三:区间合并法 (结合下一题 56. Merge Intervals 的写法)
class Solution: #
def partitionLabels(self, s: str) -> List[int]:
aaa = list(set(s))
#aaa.sort()
bbb = list(s)
ccc = []
for i in reversed(bbb):
ccc.append(i)
intervals = []
for i in range(len(aaa)):
intervals.append([bbb.index(aaa[i]),len(bbb)-ccc.index(aaa[i])-1])
# 先求出各个字母的存在区间,之后利用区间合并方法得出所有不相邻的最大区间。
intervals.sort(key = lambda x:x[0])
newinterval = []
left, right = intervals[0][0], intervals[0][1]
for i in range(1,len(intervals)):
if intervals[i][0] in range(left, right+1):
right = max(intervals[i][1],intervals[i-1][1],right)
left = min(intervals[i-1][0],left)
else:
newinterval.append(right-left+1)
left = intervals[i][0]
right = intervals[i][1]
newinterval.append(right-left+1)
return newinterval
``` ```
### Go ### Go