来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/di-string-match
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
[贪心算法&双指针]左右指针分别指向0和n,如果遇到 I 就把左指针的值填入然后自增,如果遇到D就把右指针的值填入然后自减。
class Solution {
public:
vector<int> diStringMatch(string s) {
int left = 0, right = s.size();
vector<int> perm(s.size() + 1); //结果数组
//遇到I左指针填入然后自增,遇到D右指针填入然后自减
for (int i = 0; i < s.size(); ++ i)
perm[i] = s[i] == 'I' ? left ++ : right --;
perm[s.size()] = left; // 最后剩下一个数字
return perm;
}
};