mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
Merge pull request #1901 from ZerenZhang2022/patch-9
Update 0763.划分字母区间.md
This commit is contained in:
@ -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
|
||||||
|
Reference in New Issue
Block a user