解题思路:
一道简单的贪心问题,从整数组合的两边出发,遇到I就把左边的数放入,左指针前进,遇到D就把右边的数放入,右指针后退,最后还剩一个数放最后即可,它总能满足条件(由最后一个I或者D决定),代码如下:
class Solution {
public:
vector<int> diStringMatch(string s) {
int n = s.size();
int left = 0, right = n;
vector<int> res;
for(int i = 0; i < n; i ++) {
if(s[i] == 'I') {
res.emplace_back(left ++);
} else {
res.emplace_back(right --);
}
}
res.emplace_back(left);
return res;
}
};