- 划分字母区间
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。
示例:
输入:S = “ababcbacadefegdehijhklij”
输出:[9,7,8]
class Solution {
public List<Integer> partitionLabels(String s) {
int[] tmp = new int[26];
char[] cs = s.toCharArray();
for(int i = 0; i < cs.length; i++){
tmp[cs[i] - 'a'] = i;
}
int start = 0;
int end = -1;
List<Integer> list = new LinkedList<>();
for(int i = 0; i < cs.length; i++){
start = Math.max(start, tmp[cs[i] - 'a']);
if(start == i){
list.add(i - end);
end = i;
}
}
return list;
}
}