题目来源
题目描述
代码
贪心思想
public List<Integer> partitionLabels(String s) {
//记录初始化的每个字符最后出现的位置
int[] last = new int[26];
int length = s.length();
for (int i = 0; i < length; i++) {
last[s.charAt(i) - 'a'] = i;
}
List<Integer> partition = new ArrayList<Integer>();
int start = 0, end = 0;
for (int i = 0; i < length; i++) {
end = Math.max(end, last[s.charAt(i) - 'a']);
//当前字符后续没有了,说明s[start,end]是一个完整的子串
if (i == end) {
partition.add(end - start + 1);
start = end + 1;
}
}
return partition;
}