解题思路
我感觉本题的重点在于找到最后一个字母的位置。
不过由于查找的太多,这个方法比较耗费时间。
class Solution {
public:
vector<int> partitionLabels(string s) {
int c=0,m=0,n=0,k=0;
vector<int> t;
char fir=s[0],sec;
c=s.length();
while(c){
m=s.find_first_of(fir,0);//从0开始查找符合fir字符的字母所在的位置
n=s.find_last_of(fir);//查找最后一个符合sec字符的字母所在的位置
for(int i=m+1;i<n;i++){//判断m n中间的字母对应的最后一个字母所在位置,如果在n后面,将n改为后面的字母位置
sec=s[i];
k=s.find_last_of(sec);
n=n>k?n:k;
}
t.push_back(n-m+1);
fir=s[n+1];
c=c-(n-m+1);
}
return t;
}
};