Problem Statement
There is nothing more beautiful than just an integer number.
You are given an integer n. Write down n in decimal notation with no leading zeroes, and let M be the number of written digits. Perform the following operation exactly k times:
- Choose two different 1-based positions, i and j, such that 1 <= i < j <= M. Swap the digits at positions i and j. This swap must not cause the resulting number to have a leading zero, i.e., if the digit at position j is zero, then i must be strictly greater than 1.
Return the maximal possible number you can get at the end of this procedure. If it's not possible to perform k operations, return -1 instead.
Definition
- Class:
- TheSwap
- Method:
- findMax
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int findMax(int n, int k)
- (be sure your method is public)
Constraints
- n will be between 1 and 1,000,000, inclusive.
- k will be between 1 and 10, inclusive.
Examples
16375
1
Returns: 76315
The optimal way is to swap 1 and 7.
432
1
Returns: 423
In this case the result is less than the given number.
90
4
Returns: -1
We can't make even a single operation because it would cause the resulting number to have a leading zero.
5
2
Returns: -1
Here we can't choose two different positions for an operation.
91
3
Returns: 19
65
7
Returns: 56
45
7
Returns: 54
757148
1
Returns: 857147
301413
5
Returns: 433110
659598
6
Returns: 998655
391749
2
Returns: 997143
35766
3
Returns: 76653
473038
7
Returns: 874330
3615
7
Returns: 6531
392289
3
Returns: 998322
100757
1
Returns: 700751
401413
1
Returns: 441013
759598
2
Returns: 997558
491749
2
Returns: 997144
135766
1
Returns: 735166
900757
9
Returns: 977500
901413
9
Returns: 943110
959598
10
Returns: 999855
991749
10
Returns: 999741
935766
9
Returns: 976653
999996
1
Returns: 999996
999992
5
Returns: 999992
999990
6
Returns: 999990
999997
2
Returns: 999997
1000000
3
Returns: 1000000
1000000
1
Returns: 1000000
1000000
10
Returns: 1000000
999999
10
Returns: 999999
999999
1
Returns: 999999
2199
2
Returns: 9921
1299
2
Returns: 9921
543219
10
Returns: 954312
543219
6
Returns: 954312
543219
4
Returns: 954312
543219
5
Returns: 954321
70
8
Returns: -1
10
1
Returns: -1
4
7
Returns: -1
33445
3
Returns: 54433
5
1
Returns: -1
436659
2
Returns: 966354
436659
10
Returns: 966543
21996
2
Returns: 99216
579201
7
Returns: 975201
194523
10
Returns: 954312
87993
2
Returns: 99873
331
2
Returns: 331
800
3
Returns: 800
123456
10
Returns: 654312
120000
10
Returns: 210000
30199
2
Returns: 99130
721865
10
Returns: 876512
10033
2
Returns: 33010
6399
2
Returns: 9963
100
2
Returns: 100
436659
4
Returns: 966543
8699
2
Returns: 9986
967983
7
Returns: 998763
101
2
Returns: 110
665
1
Returns: 665
654321
9
Returns: 654312
10022
2
Returns: 22010
1022
2
Returns: 2210
3445
2
Returns: 5443
120
1
Returns: 210
1000
1
Returns: 1000
3221
1
Returns: 3221
900
10
Returns: 900
10000
1
Returns: 10000
765432
10
Returns: 765432
332
1
Returns: 332
992307
9
Returns: 997320
100
1
Returns: 100
986541
10
Returns: 986541
1000000
2
Returns: 1000000
6577
2
Returns: 7765
654332
9
Returns: 654332
122
2
Returns: 221
554321
1
Returns: 554321
1234
5
Returns: 4312
1000000
8
Returns: 1000000
999999
2
Returns: 999999
9000
3
Returns: 9000
1000000
5
Returns: 1000000
100
10
Returns: 100
325664
2
Returns: 665324
5000
4
Returns: 5000
512939
2
Returns: 992531
991
1
Returns: 991
99999
10
Returns: 99999
90000
4
Returns: 90000
109
3
Returns: 901
311222
10
Returns: 322211
436659
7
Returns: 966543
970903
7
Returns: 997300
967845
10
Returns: 987654
849769
2
Returns: 998764
12
1
Returns: 21
3321
1
Returns: 3321
76455
2
Returns: 76554
456789
10
Returns: 987645
951491
10
Returns: 995411
16373
2
Returns: 76331
897654
9
Returns: 987654
10000
10
Returns: 10000
900
1
Returns: 900
1000
2
Returns: 1000
10000
3
Returns: 10000
2000
2
Returns: 2000
53662
2
Returns: 66532
1252
6
Returns: 5221
9443
1
Returns: 9443
626
1
Returns: 662
544321
1
Returns: 544321
1001
1
Returns: 1100
900
4
Returns: 900
6477
2
Returns: 7764
436659
5
Returns: 966543
21772
2
Returns: 77212
440
1
Returns: 440
12
5
Returns: 21
909
2
Returns: 990
10
2
Returns: -1
919
1
Returns: 991
32888
2
Returns: 88832
1000000
6
Returns: 1000000
1000
7
Returns: 1000
11100
1
Returns: 11100
12345
10
Returns: 54321
101
3
Returns: 110
987654
9
Returns: 987645
984566
2
Returns: 986654
101128
4
Returns: 821110
4332
1
Returns: 4332
987654
10
Returns: 987654
9000
1
Returns: 9000
200
1
Returns: 200
500
1
Returns: 500
100
9
Returns: 100
198765
10
Returns: 987615
400
1
Returns: 400
90
1
Returns: -1
2199
9
Returns: 9921
4366
2
Returns: 6643
101
1
Returns: 110
723623
9
Returns: 763322
1000
10
Returns: 1000
91
2
Returns: 91
109
1
Returns: 901
552
1
Returns: 552
439494
3
Returns: 994443
22222
10
Returns: 22222
999990
10
Returns: 999990
9661
1
Returns: 9661
40000
1
Returns: 40000
9910
1
Returns: 9910
9000
2
Returns: 9000
312
2
Returns: 312
661
2
Returns: 661
9810
1
Returns: 9801
123345
3
Returns: 543321
983472
9
Returns: 987432
25
5
Returns: 52
210
1
Returns: 201
901421
10
Returns: 942110
978909
5
Returns: 999870
99
3
Returns: 99
432
2
Returns: 432
234
2
Returns: 423
165432
10
Returns: 654312
30000
2
Returns: 30000
222222
10
Returns: 222222
5552
1
Returns: 5552
983657
9
Returns: 987653
12345
4
Returns: 54321
654321
7
Returns: 654312
985466
2
Returns: 986654
466639
3
Returns: 966643
510
1
Returns: 501
50
1
Returns: -1
3166
2
Returns: 6631
9921
1
Returns: 9921
636
1
Returns: 663
700
1
Returns: 700
4402
1
Returns: 4420
31188
2
Returns: 88131
90000
2
Returns: 90000
6263
1
Returns: 6623
2155
2
Returns: 5521
10000
2
Returns: 10000
22
6
Returns: 22
661
1
Returns: 661
512909
2
Returns: 992501
3456
7
Returns: 6534
8799
2
Returns: 9987
10000
5
Returns: 10000
9818
2
Returns: 9881
23
3
Returns: 32
231268
9
Returns: 863221
849991
3
Returns: 999841
982313
3
Returns: 983321
2055
2
Returns: 5520
436659
9
Returns: 966543
123
3
Returns: 321
1055
2
Returns: 5510
321000
1
Returns: 321000
654321
6
Returns: 654321
354
6
Returns: 543
476890
4
Returns: 987604
123321
3
Returns: 332211
1000000
4
Returns: 1000000
11
1
Returns: 11
100000
8
Returns: 100000
100000
1
Returns: 100000
13
10
Returns: 13
6000
4
Returns: 6000
135790
10
Returns: 975310
89
3
Returns: 98
12
3
Returns: 21
362858
3
Returns: 886352
96632
1
Returns: 96632
987656
4
Returns: 987665
110
1
Returns: 110
481102
8
Returns: 842110
3312
1
Returns: 3321
25536
3
Returns: 65532