LeetCode: 763. 划分字母区间
一开始没有头绪, 仔细想想,这题是需要找到某个相同字符的最大区间范围
那么就可以通过记录该区间的最初位置 了 left、该区间某个相同字符出现的最大下标mx。
利用 string.lastIndexOf() 函数
遍历统计 >> 贪心、双指针遍历统计
public List<Integer> partitionLabels(String S) { int left = 0; int mx = 0; List<Integer> list = new ArrayList<>(); for (int i = 0; i < S.length(); i++) { int index = S.lastIndexOf(S.charAt(i)); if(mx == i && index == i) { // 单个字符 包括上了 list.add(mx - left + 1); left = i + 1; mx = left; continue ; } if(index > mx) mx = index; // 单个字符 // if(index == i && mx == index){ // list.add(1); // continue ; // } } return list; }