Numbers At Most N Given Digit Set LeetCode solution in JavaScript
1var atMostNGivenDigitSet = function (digits, n) {2const asString = "" + n;3let smaller = 0;4let prev = 1;5for (let i = asString.length - 1; i >= 0; --i) {6const L = asString.length - 1 - i;7const num = +asString[i];8let equal = 0;9let less = 0;10for (let digit of digits) {11if (digit == num) {12equal = 1;13}14if (digit > num) {15break;16}17if (digit < num) {18less++;19}20}21prev = less * Math.pow(digits.length, L) + equal * prev;22if (L < asString.length - 1) {23smaller += Math.pow(digits.length, L + 1);24}25}26return smaller + prev;27};