vector<int>partitionLabels(string s){
//result存储子字符串数组长度
vector<int> result;//last存储字符串起始位置,用于计算子字符串长度//默认为-1,为了保证第一个字符串长度为i+1int last =-1;//right存储子字符串内元素最远位置int right =-1;//cur用于避免重复元素重复判断最远位置
string cur;
cur.clear();//开始搜索for(int i =0; i < s.size(); i++){
//如果没有计算过该字符的最远位置则计算并更新子字符串内元素的最远位置,并将字符插入到cur中避免重复元素再次判断if(cur.find(s[i])== cur.npos){
right =(int)s.find_last_of(s[i])> right ?(int)s.find_last_of(s[i]): right;
cur.push_back(s[i]);}//当遍历元素到达最远位置时,记录当前子字符串长度,cur清空,记录下一子字符串起始位置if(i == right){
result.push_back(i-last);
cur.clear();
last = i;}}return result;}