0763 - Partition Labels
You are given a string s. We want to partition the string into as many parts as possible so that each letter appears in at most one part.
Return a list of integers representing the size of these parts.
Examples
Input: s = "ababcbacadefegdehijhklij"
Output: [9,7,8]
Explanation: The partition is "ababcbaca", "defegde", "hijhklij". This is a partition so that each letter appears in at most one part. A partition like "ababcbacadefegde", "hijhklij" is incorrect, because it splits s into less parts.
Input: s = "eccbbbbdec"
Output: [10]
Constraints
1 <= s.length <= 500
s consists of lowercase English letters.
Java Solution
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 partitionStart = 0, partitionEnd = 0;
List<Integer> result = new ArrayList<>();
for(int i = 0; i < S.length(); i++) {
partitionEnd = Math.max(partitionEnd, last[S.charAt(i) - 'a']);
if(i == partitionEnd) {
result.add(partitionEnd - partitionStart + 1);
partitionStart = i+1;
}
}
return result;
}
}
Last updated