Open larscheng opened 1 month ago
贪心算法
public List<Integer> partitionLabels(String s) {
int[] last = new int[26];
for (int i = 0; i < s.length(); i++) {
//收集所有元素最后出现的位置
last[s.charAt(i) - 'a'] = i;
}
int start = 0, end = 0;
List<Integer> result = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
//不断更新片段边界
end = Math.max(end, last[s.charAt(i) - 'a']);
//遍历到边界时,收集片段长度,重置开始位置
if (i == end) {
result.add(end - start + 1);
start = end + 1;
}
}
return result;
}
}
763. 划分字母区间