Problem Statement
- The digits in the new password are a permutation of the digits in oldPassword.
- For each i, the i-th most significant digit (0-based index) of the new password is not restrictedDigits[i].
Return the new password X. If there are multiple solutions, return the one for which |oldPassword - X| is minimized. If there are still two possible solutions, return the smaller one. If there is no valid new password at all, return -1 instead.
Definition
- Class:
- KingdomAndPassword
- Method:
- newPassword
- Parameters:
- long, int[]
- Returns:
- long
- Method signature:
- long newPassword(long oldPassword, int[] restrictedDigits)
- (be sure your method is public)
Notes
- |x| denotes the absolute value of x. For example, |3| = |-3| = 3.
- The new password may be equal to the old password (see example 2).
Constraints
- oldPassword will be between 1 and 10^16 - 1, inclusive.
- oldPassword will not contain the digit zero.
- restrictedDigits will contain the same number of elements as the number of digits in oldPassword.
- Each element of restrictedDigits will be between 1 and 9, inclusive.
Examples
548
{5, 1, 8}
Returns: 485
7777
{4, 7, 4, 7}
Returns: -1
The only possible new password is 7777. Since digit 7 is restricted in two positions, this new password cannot be created.
58
{4, 7}
Returns: 58
172
{4, 7, 4}
Returns: 127
Both 127 and 217 are valid passwords. No other valid password is closer to 172 than these two. In this situation, King Dengklek will choose the smaller one.
241529363573463
{1, 4, 5, 7, 3, 9, 8, 1, 7, 6, 3, 2, 6, 4, 5}
Returns: 239676554423331
172
{1, 7, 2}
Returns: 217
1
{1}
Returns: -1
9999999999999999
{8, 3, 6, 6, 2, 1, 4, 6, 1, 2, 6, 5, 1, 7, 6, 7}
Returns: 9999999999999999
9999999999999999
{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}
Returns: -1
6669982649
{9, 6, 9, 4, 6, 6, 6, 9, 8, 2}
Returns: 6826499669
2371232579661552
{5, 5, 7, 6, 3, 7, 2, 1, 2, 3, 6, 2, 1, 5, 9, 2}
Returns: 2369767555312221
4689479974398
{7, 4, 3, 8, 9, 9, 6, 9, 8, 7, 4, 9, 4}
Returns: 4689479899743
46128
{2, 6, 1, 8, 4}
Returns: 48216
64271513
{5, 7, 6, 1, 2, 1, 3, 4}
Returns: 64271513
9151
{9, 1, 5, 1}
Returns: 1915
23171
{1, 7, 1, 3, 2}
Returns: 23711
441462224
{1, 4, 2, 2, 4, 4, 6, 4, 2}
Returns: 426422414
1985196
{9, 9, 8, 5, 6, 1, 1}
Returns: 1899165
4338746596458
{3, 4, 5, 6, 8, 8, 3, 6, 4, 7, 9, 4, 5}
Returns: 4338746596458
66259
{5, 6, 9, 2, 6}
Returns: 65692
589326
{3, 6, 9, 5, 8, 2}
Returns: 586923
544823589767
{3, 6, 2, 5, 4, 8, 5, 7, 9, 8, 7, 4}
Returns: 544823657789
855313355
{3, 3, 5, 5, 8, 5, 3, 1, 5}
Returns: 853353551
7993235
{9, 9, 3, 5, 3, 2, 7}
Returns: 7599233
841689983651673
{8, 3, 5, 9, 6, 3, 9, 8, 1, 8, 4, 1, 6, 6, 7}
Returns: 799888666534311
6651564386
{1, 5, 6, 8, 6, 5, 6, 3, 6, 4}
Returns: 6651564638
7
{7}
Returns: -1
938394
{9, 3, 3, 9, 4, 8}
Returns: 899433
8433
{3, 8, 3, 4}
Returns: 8343
9356434931967561
{9, 3, 5, 3, 4, 3, 1, 3, 4, 3, 5, 7, 6, 6, 9, 6}
Returns: 7999666554433311
27799539
{4, 1, 7, 7, 3, 6, 2, 9}
Returns: 27935997
89994662991474
{9, 6, 9, 7, 9, 2, 1, 8, 4, 6, 4, 9, 7, 9}
Returns: 89796999642441
1395981945
{4, 5, 5, 9, 1, 3, 5, 8, 9, 8}
Returns: 1395981945
83
{8, 4}
Returns: 38
9735633893326
{3, 1, 8, 5, 1, 7, 3, 6, 8, 5, 9, 9, 3}
Returns: 9736235333689
568519
{9, 5, 7, 1, 5, 6}
Returns: 568519
578396383741221
{3, 4, 8, 8, 7, 5, 3, 1, 6, 2, 8, 1, 3, 7, 7}
Returns: 577988643332211
19793192822
{4, 1, 5, 5, 9, 7, 2, 3, 3, 9, 1}
Returns: 19793192822
811632227185915
{1, 1, 2, 7, 5, 1, 4, 8, 3, 1, 6, 2, 5, 8, 9}
Returns: 821112125356798
659
{5, 8, 8}
Returns: 659
54338445672426
{8, 5, 4, 3, 6, 1, 2, 5, 4, 8, 6, 4, 4, 8}
Returns: 54342234547686
64454
{5, 4, 5, 3, 4}
Returns: 46445
79637946132
{3, 9, 2, 7, 7, 1, 7, 4, 2, 6, 8}
Returns: 77996643321
4516632961524187
{4, 3, 7, 8, 3, 1, 1, 5, 1, 5, 5, 9, 2, 4, 2, 4}
Returns: 3987666454251211
8
{8}
Returns: -1
9868564685726583
{2, 6, 5, 3, 3, 2, 2, 5, 1, 8, 6, 3, 4, 8, 8, 7}
Returns: 9868564685726538
174
{9, 1, 7}
Returns: 174
91296294
{2, 3, 9, 7, 2, 2, 9, 4}
Returns: 91296429
766455314942
{8, 6, 5, 6, 4, 3, 6, 2, 6, 5, 8, 4}
Returns: 759566444321
78937768633
{6, 5, 8, 3, 6, 5, 8, 7, 6, 5, 3}
Returns: 78963336778
31588534453243
{8, 6, 5, 5, 3, 5, 3, 4, 6, 8, 3, 5, 8, 4}
Returns: 31488455542333
9962
{9, 6, 6, 5}
Returns: 6992
227187615844
{6, 2, 1, 1, 9, 7, 9, 1, 4, 8, 4, 2}
Returns: 218876752414
411
{1, 2, 8}
Returns: 411
6646113
{9, 6, 1, 2, 1, 6, 3}
Returns: 6466311
2952
{2, 3, 5, 2}
Returns: 5229
39659883423
{5, 3, 6, 6, 7, 8, 3, 3, 5, 9, 5}
Returns: 39598684332
483
{5, 5, 2}
Returns: 483
54
{5, 1}
Returns: 45
172
{3, 7, 3}
Returns: 127
132251342515551
{4,5,5,5,5,5,2,5,3,5,1,5,4,5,5}
Returns: 511112525253534
3345411115342361
{4,1,1,3,1,1,1,6,2,1,4,1,1,1,1,1}
Returns: 1651544114133332
1542545132141325
{4,2,3,5,5,5,5,5,5,5,5,5,2,5,5,5}
Returns: 5551111222335444
6119193531479171
{8,1,8,1,1,1,1,6,4,1,1,2,7,1,1,1}
Returns: 1919977116511433
6119193531479171
{8,1,8,1,1,1,1,6,4,1,1,2,6,1,1,1}
Returns: 1919977116511433
6118192831479171
{8,1,8,1,1,1,1,6,4,1,1,2,6,1,1,1}
Returns: 1919887117611432
6118192831579171
{8,1,8,1,1,1,1,6,4,1,1,2,6,1,1,1}
Returns: 1919887117611532
6118192831579171
{1,1,8,1,1,1,1,6,4,1,1,2,6,1,1,1}
Returns: -1
6118192831519771
{1,1,5,1,1,1,1,9,4,1,1,2,6,1,1,1}
Returns: -1
6119152831519771
{1,1,5,1,1,1,1,4,4,1,1,2,6,1,1,1}
Returns: -1
6119152833519771
{1,1,5,1,1,1,1,4,4,1,1,1,6,1,1,1}
Returns: -1
6119182833519771
{1,1,5,1,1,1,1,4,4,1,1,1,6,1,1,1}
Returns: -1
6119182833519741
{8,1,5,1,1,1,1,4,4,1,1,1,6,1,1,1}
Returns: 1919887116541332
6119182833519741
{8,1,5,1,1,1,1,4,2,1,1,1,6,1,1,1}
Returns: 1919887116541332
6919182833519741
{8,1,1,1,1,1,1,4,4,1,1,1,6,1,1,1}
Returns: 1999887116541332
5176858323464289
{9,7,8,9,8,8,8,8,8,8,8,8,8,8,8,8}
Returns: 8818223344556679
4752914625388618
{9,8,7,3,8,8,8,8,8,8,8,8,8,8,8,8}
Returns: 8188122344556679
241529363573463
{1, 4, 5, 7, 3, 9, 8, 1, 7, 6, 3, 2, 6, 4, 5 }
Returns: 239676554423331
548
{5, 1, 8 }
Returns: 485
9999912399945698
{1, 4, 9, 9, 3, 9, 8, 1, 7, 6, 3, 2, 6, 4, 9, 8 }
Returns: 9986959999994321
1234567899787
{1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 7 }
Returns: 2143658777989
1234567891234567
{2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1 }
Returns: 1234567891234567
123456781234567
{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }
Returns: 123456781234567
123456789123451
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }
Returns: -1
3941
{5, 9, 5, 5 }
Returns: 4139