划分字母区间

划分字母区间

https://leetcode.cn/problems/partition-labels/description/

图 0

思路

1、使用哈希表将每个字符的最远位置记录下来
2、从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点

图 1

求解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var partitionLabels = function(s) {
let map = new Map()
for(let i=0;i<s.length;i++){
map.set(s[i],i)
}
let result = []
let left=0,right=0
for(let i=0;i<s.length;i++){
right = Math.max(right,map.get(s[i]))
// 找到分割点的标志。
if (right === i){
result.push(right-left+1)
left = i+1
}
}
return result
};