文章目录

  • ​​🔴力扣原题:​​
  • ​​🟠题目简述:​​
  • ​​🟡解题思路:​​
  • ​​🟢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,则返回其中 任何一个 。

🟡解题思路:

  1. 贪心大法好;
  2. 根据题意可得​​I​​​就是升序,​​D​​就是降序,
  3. 如果第一个字母为​​I​​​,那么只要第一个数为​​0​​,那第二个数为任意数即可;
  4. 如果第一个字母为​​D​​​,那么只要第一个数为​​n​​,那么第二数为任意数即可;
  5. 以此类推;
  6. over;

🟢C++代码:

class Solution {
public:
vector<int> diStringMatch(string s) {
int n = s.length();
int min = 0, max = n;
vector<int> vec;

for(auto ch : s)
{
if(ch == 'I')
{
vec.push_back(min++);
}
else
{
vec.push_back(max--);
}
}

vec.push_back(min);

return vec;
}
};

🔵结果展示:

「 每日一练,快乐水题 」942. 增减字符串匹配_leetcode