Problem Statement
A number x is called equidigit if each digit that appears in the decimal notation of x appears the same number of times. (x must be written with no leading zeroes.)
For example, the numbers 5, 239, 333888 and 566353 are equidigit.
Given a string representing a number n, return the smallest equidigit number that is greater than or equal to n.
Definition
- Class:
- EquiDigitNumbers
- Method:
- findNext
- Parameters:
- String
- Returns:
- long
- Method signature:
- long findNext(String n)
- (be sure your method is public)
Notes
- The answer always fits into a 64-bit signed integer.
Constraints
- n will contain only digits, and will represent an integer between 1 and 10^18, inclusive, with no leading zeros.
Examples
"42"
Returns: 42
When given an equidigit number, you should return that same number.
"2008"
Returns: 2013
The numbers 2008, 2009, 2010, 2011 and 2012 are not equidigit, and the number 2013 is.
"987654322"
Returns: 987778899
"1000000000000000000"
Returns: 1111111111111111111
The number 1111111111111111111 is equidigit, so the answer always fits into a 64-bit signed integer.
"1"
Returns: 1
"7"
Returns: 7
"9"
Returns: 9
"10"
Returns: 10
"11"
Returns: 11
"77"
Returns: 77
"99"
Returns: 99
"100"
Returns: 102
"101"
Returns: 102
"565"
Returns: 567
"770"
Returns: 777
"999"
Returns: 999
"1000"
Returns: 1001
"6998"
Returns: 7007
"10000"
Returns: 10234
"11239"
Returns: 12034
"33334"
Returns: 34012
"100000"
Returns: 100011
"332233"
Returns: 332244
"987655"
Returns: 987789
"6565656"
Returns: 6570123
"7897654"
Returns: 7901234
"9876544"
Returns: 9999999
"10000007"
Returns: 10000111
"18075655"
Returns: 18075692
"23871987"
Returns: 23872378
"34344344"
Returns: 34344433
"99999000"
Returns: 99999999
"100000000"
Returns: 100011222
"566000000"
Returns: 566000556
"986998868"
Returns: 987012345
"999888999"
Returns: 999999999
"1001001111"
Returns: 1001010011
"2222444444"
Returns: 2222525555
"3982475615"
Returns: 3982476015
"5556667777"
Returns: 5557557777
"8767865999"
Returns: 8767869009
"10000000000"
Returns: 11111111111
"79117818325"
Returns: 88888888888
"88898989898"
Returns: 99999999999
"555435444334"
Returns: 555436334466
"666262266266"
Returns: 666262272777
"975335799754"
Returns: 975335800789
"998877665555"
Returns: 998877666789
"1010101010101"
Returns: 1111111111111
"10101010010101"
Returns: 10101010010101
"41440000000566"
Returns: 41441111114444
"57855001234567"
Returns: 57856001122678
"87128712700000"
Returns: 87128712900339
"87858000000000"
Returns: 87859001122579
"555094094988888"
Returns: 555094096044669
"797870000056600"
Returns: 797870001118899
"1120000000100000"
Returns: 1120000112223333
"3974000000010000"
Returns: 3974001122345579
"7777780000001000"
Returns: 7777787778888888
"9876543210123456"
Returns: 9876543223456789
"9998765432101234"
Returns: 9998766667778889
"9999978654321012"
Returns: 9999979777777799
"9999999999999999"
Returns: 9999999999999999
"10000000000000000"
Returns: 11111111111111111
"34343434343434343"
Returns: 44444444444444444
"44444444444878778"
Returns: 55555555555555555
"99999999999999999"
Returns: 99999999999999999
"100000000000000000"
Returns: 100000000011111111
"111112222223333333"
Returns: 111112222224144444
"477472729387456236"
Returns: 477472742222244477
"477572729387456236"
Returns: 477572800022445588
"623987154623987154"
Returns: 623987154623987154
"633463729387456236"
Returns: 633463729422467799
"912337462988765544"
Returns: 912337464001255679
"999999999999999999"
Returns: 999999999999999999
"12345678910"
Returns: 22222222222
"900230876000003210"
Returns: 900230877223378899
"111111111111111112"
Returns: 111111111222222222
"2945678900"
Returns: 2945680137
"11111111111111112"
Returns: 22222222222222222
"12341234123412341"
Returns: 22222222222222222
"119993"
Returns: 120012
"22559999"
Returns: 22560056
"928283210923765"
Returns: 928283211133899
"229994"
Returns: 230023
"1234567890"
Returns: 1234567890
"812814"
Returns: 812821
"90000000000000000"
Returns: 99999999999999999
"413134337691647105"
Returns: 413134340001222555
"1234567889"
Returns: 1234567890