题目描述:
思路:
题目隐含的一个要求就是:返回的数组中的数字没有重复,在0—S.size()之中;
首先判断是"I"的话,存放0—S.size()中间的最小值;那么此时区间变化(变成1—S.size())
如果是"D"的话,存放0—S.size()中间的最大值;那么此时区间变化(变成0—S.size()-1)
依次类推;
代码如下:
class Solution {
public:
vector<int> diStringMatch(string S) {
vector<int>res;
int max_num=S.size();
int min_num=0;
for(int i=0;i<S.size();i++){
if(S[i]=='I'){
res.push_back(min_num);
min_num++;}
if(S[i]=='D'){
res.push_back(max_num);
max_num--;}
}
res.push_back(min_num);
return res;
}
};