我的思路是,碰见D插入标志位(-1),碰见I就直接依次插入数字,并且统计I的个数,因为最后一个数字就是I的个数,然后再返回过来处理D,处理方法也很简单,从I个数sum开始加一就行。
class Solution {
public:
vector<int> diStringMatch(string S) {
int sum = 0; //统计I的个数
int m = 0; //记录I
vector<int>v;
for(int i = 0; i<S.size();i++)
{
if(S[i] == 'D')
v.push_back(-1);
else
{
v.push_back(m++);
sum++;
}
}
v.push_back(sum);
for(int i = v.size();i >=0; i--)
{
if(v[i] == -1)
v[i] = ++sum;
}
return v;
}
};