File tree 1 file changed +21
-16
lines changed
1 file changed +21
-16
lines changed Original file line number Diff line number Diff line change 1
1
/**
2
- * @param {string[] } D
3
- * @param {number } N
2
+ * @param {string[] } digits
3
+ * @param {number } n
4
4
* @return {number }
5
5
*/
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
17
21
}
18
- if ( ! hasSameNum ) return rtn
22
+ if ( sameNum === false ) return res
19
23
}
20
- return rtn + 1
21
- }
24
+
25
+ return res + 1
26
+ } ;
You can’t perform that action at this time.
0 commit comments