classSolution{publicList<Integer>partitionLabels(String s){int[] hash =newint[26];//26个字母范围内char[] chars = s.toCharArray();//将字符串转化为字符数组,便于遍历操作for(int i =0; i < chars.length; i++){
hash[chars[i]-'a']= i;//记录遍历过每个元素出现位置的最远距离对应的下标索引}int left =0;//初始化第一个子串的起点int idx =0;//记录路径上遍历元素最远距离的索引,初始化未0LinkedList<Integer> res =newLinkedList<>();//用链表存储有序的整数值for(int i =0; i < chars.length; i++){
idx =Math.max(idx, hash[chars[i]-'a']);//当前元素最远出现边界,遍历并取当前路径上最大的进行记录if(i == idx){//找到了符合条件的
res.add(idx - left +1);//返回满足条件子串的长度
left = i +1;//更新下一个子串的起点}}return res;}}