每日一题ing,今天是个medium题763. Partition Labels
class Solution {
public:
int Max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
vector<int> partitionLabels(string s) {
int min=0,mark[150];
vector<int> temp;
temp.push_back(-1);
for(int i=0;i<s.length();i++)
{
mark[s[i]]=i;
}
int i=0;
while(i<s.length())
{
int flag=1,max=0;
for(int j=i+1;j<Max(mark[s[i]],max);j++)
{
if(mark[s[j]]>mark[s[i]])
{
flag=0;
if(mark[s[j]]>max)
max=mark[s[j]];
}
}
if(flag==0)
{
temp.push_back(max);
i=max+1>mark[s[i]]+1?max+1:mark[s[i]]+1;
}
if(flag==1)
{
temp.push_back(mark[s[i]]);
i=mark[s[i]]+1;
}
}
vector<int> result;
for(int i=1;i<temp.size();i++)
{
result.push_back(temp[i]-temp[i-1]);
}
return result;
}
};