package 字符串操作.q763_划分字母区间;
import java.util.ArrayList;
import java.util.List;
/**
* 先存储每个字母最后出现的位置,最后遍历一次 o(n)
*/
public class Solution {
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 j = 0, anchor = 0;
List<Integer> ans = new ArrayList<>();
for (int i = 0; i < S.length(); ++i) {
j = Math.max(j, last[S.charAt(i) - 'a']);
if (i == j) {
ans.add(i - anchor + 1);
anchor = i + 1;
}
}
return ans;
}
public static void main(String[] args) {
new Solution().partitionLabels("abccaddbeffe");
}
}
q763_划分字母区间
作品《LeetCode题目分类与面试问题整理 - q763_划分字母区间》由 不喝星巴克 发布于 匠果,转载请注明出处及链接地址:
http://www.jiangguo.net/c/9r6/4m7.html