var smallestNumber = function (pattern) {
const stack = []
let result = ""
for (let i = 0; i <= pattern.length; i++) {
stack.push(i + 1)
if (i === pattern.length || pattern[i] === "I") {
while (stack.length) {
result += stack.pop()
}
}
}
return result
}
var smallestNumber = function (pattern) {
let arr = Array.from({ length: pattern.length + 1 }).fill("")
let nextNum = 1
function fillBackward(idx) {
for (let i = idx - 1; i >= 0; i--) {
if (arr[i]) break
arr[i] = nextNum++
}
}
for (let i = 0; i < pattern.length; i++) {
if (pattern[i] === "I") {
arr[i] = nextNum++
fillBackward(i)
}
}
fillBackward(arr.length)
return arr.join("")
}
console.log(smallestNumber("IIIDIDDD"))