Skip to content

Commit f66ef84

Browse files
authored
Update 902-numbers-at-most-n-given-digit-set.js
1 parent 9878d9f commit f66ef84

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed
+21-16
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
/**
2-
* @param {string[]} D
3-
* @param {number} N
2+
* @param {string[]} digits
3+
* @param {number} n
44
* @return {number}
55
*/
6-
const atMostNGivenDigitSet = function (D, N) {
7-
const NS = '' + N
8-
const digit = NS.length,
9-
dsize = D.length
10-
let rtn = 0
11-
for (let i = 1; i < digit; ++i) rtn += Math.pow(dsize, i)
12-
for (let i = 0; i < digit; ++i) {
13-
let hasSameNum = false
14-
for (let d of D) {
15-
if (d < NS[i]) rtn += Math.pow(dsize, digit - i - 1)
16-
else if (d == NS[i]) hasSameNum = true
6+
const atMostNGivenDigitSet = function(digits, n) {
7+
const str = '' + n, { pow } = Math
8+
const len = str.length, dsize = digits.length
9+
let res = 0
10+
11+
for(let i = 1; i < len; i++) {
12+
res += pow(dsize, i)
13+
}
14+
15+
for(let i = 0; i < len; i++) {
16+
let sameNum = false
17+
for(const d of digits) {
18+
if(+d < +str[i]) {
19+
res += pow(dsize, len - i - 1)
20+
} else if(+d === +str[i]) sameNum = true
1721
}
18-
if (!hasSameNum) return rtn
22+
if(sameNum === false) return res
1923
}
20-
return rtn + 1
21-
}
24+
25+
return res + 1
26+
};

0 commit comments

Comments
 (0)