class Solution {
public:
vector<int> diStringMatch(string S) {
size_t size=S.length();
vector<int > A;
//使用贪心策略
int d=size,in=0;
for (int i=0;i<size;i++) {
switch (S[i]) {
case 'D':
//遇到D,下降,即放置数组中未访问的最大值
//这样,无论下一个是谁,都可以确保A[i] > A[i+1]
A.push_back(d);
//下一次的最大值
d--;
break;
case 'I':
//遇到I,上升,即放置数组中未访问的最小值
//这样,无论下一个是谁,都可以确保A[i] < A[i+1]
A.push_back(in);
//下一次的最小值
in++;
break;
}
}
A.push_back(S[size-1]=='D'?d:in);
return A;
}
};