由范围 [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:
输入: s = "IDID"
输出: [0,4,1,3,2]
示例 2:
输入: s = "III"
输出: [0,1,2,3]
示例 3:
输入: s = "DDI"
输出: [3,2,0,1]
提示:
1 <= s.length <= 105s只包含字符"I"或"D"
题解:
/**
* @param {string} s
* @return {number[]}
*/
// 贪心
var diStringMatch = function (s) {
// 假设s[0] == 'I'时,令res[0] = 0;无论s[1]为何值都满足res[0] < res[1]
// 假设s[0] == 'D'时,令res[0] = n;无论s[1]为何值都满足res[0] > res[1]
let n = s.length, low = 0, hight = n;
let res = []
for (let i = 0; i < n; i++) {
res[i] = s[i] == 'I' ? low++ : hight--
}
res[n] = low
return res
};
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。