Skip to main content

2375.js

/** ------------------------------------------------------------------------------
*
* 2375. Construct Smallest Number From DI String
* Topics: Stack
* https://leetcode.com/problems/construct-smallest-number-from-di-string/description/?envType=daily-question&envId=2025-02-18
*
------------------------------------------------------------------------------ */
/**
* @param {string} pattern
* @return {string}
*/
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
}

/**
* @param {string} pattern
* @return {string}
*/
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"))