增减字符串匹配

由范围 [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,则返回其中 任何一个 。

  • 输入:s = “IDID”
    输出:[0,4,1,3,2]

  • 输入:s = “III”
    输出:[0,1,2,3]

1
2
3
4
5
6
7
8
9
10
11
12
13
var diStringMatch = function(s) {
const n = s.length, ans = new Array()
let left = 0, right = n
for(let i = 0; i < n; i++) {
if(s.charCodeAt(i) === 'I'.charCodeAt(0)) {
ans.push(left++)
} else {
ans.push(right--)
}
}
ans.push(left)
return ans
};