- 力扣原题:
- 题目简述:
- 解题思路:
- C++代码:
- 结果展示:
力扣原题:
942. 增减字符串匹配
题目简述:由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中:
如果 perm[i] < perm[i + 1] ,那么 s[i] == ‘I’
如果 perm[i] > perm[i + 1] ,那么 s[i] == ‘D’
给定一个字符串 s ,重构排列 perm 并返回它。如果有多个有效排列perm,则返回其中 任何一个 。
- 贪心大法好;
- 根据题意可得I就是升序,D就是降序,
- 如果第一个字母为I,那么只要第一个数为0,那第二个数为任意数即可;
- 如果第一个字母为D,那么只要第一个数为n,那么第二数为任意数即可;
- 以此类推;
- over;
class Solution {
public:
vector diStringMatch(string s) {
int n = s.length();
int min = 0, max = n;
vector vec;
for(auto ch : s)
{
if(ch == 'I')
{
vec.push_back(min++);
}
else
{
vec.push_back(max--);
}
}
vec.push_back(min);
return vec;
}
};
结果展示:



