class Solution {
public:
vector<int> partitionLabels(string s) {
vector<int> res;
vector<int> edgeArray;
int maxEdge = 0;
while (1) {
for (int i = 0;; i <= maxEdge && i < s.length(); i++) {
for (int j = i + 1; j < s.length(); j++) {
if (s[j] == s[i])
maxEdge = max(j, maxEdge);
}
}
edgeArray.push_back(maxEdge);
i = maxEdge + 1;
maxEdge = i;
if (i >= s.length())
break;
}
for (int i = 0; i < edgeArray.size(); i++) {
if (i == 0) {
res.push_back(edgeArray[i] + 1);
}else {
res.push_back(edgeArray[i] - edgeArray[i - 1]);
}
}
return res;
}
};