Problem Statement
As part of a larger scale project, you need to write a component which generates consecutive positive integers. Only certain digits may appear in the input and in the integers generated, and leading zeros aren't allowed.
You are given a
If current represents an invalid integer according to the first paragraph, return "INVALID INPUT" (quotes for clarity).
Definition
- Class:
- IntegerGenerator
- Method:
- nextInteger
- Parameters:
- int[], String
- Returns:
- String
- Method signature:
- String nextInteger(int[] allowed, String current)
- (be sure your method is public)
Constraints
- allowed will contain between 0 and 10 elements, inclusive.
- Each element in allowed will be between 0 and 9, inclusive.
- allowed will contain no duplicates.
- current will contain between 1 and 10 digits ('0'-'9'), inclusive.
Examples
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"16"
Returns: "17"
With all digits available, the next number is 17.
{ 0, 1, 2, 3, 4, 5, 6, 8, 9 }
"16"
Returns: "18"
The digit 7 is no longer allowed, so the next smallest valid integer is 18.
{ 3, 5, 8 }
"548"
Returns: "INVALID INPUT"
The current number may not contain disallowed digits.
{ 5, 3, 4 }
"033"
Returns: "INVALID INPUT"
Leading zeros aren't allowed either.
{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
"999"
Returns: "1000"
{ 0, 1, 2, 3, 4, 5 }
"0"
Returns: "INVALID INPUT"
The generator only works with positive integers.
{ 9 }
"9999999999"
Returns: "99999999999"
{ 1, 9 }
"1999999999"
Returns: "9111111111"
{ 2, 1, 3 }
"112"
Returns: "113"
{ 5, 3, 4 }
"303"
Returns: "INVALID INPUT"
{ 5, 3, 8 }
"458"
Returns: "INVALID INPUT"
{ }
"1"
Returns: "INVALID INPUT"
{ }
"0"
Returns: "INVALID INPUT"
{ }
"4444"
Returns: "INVALID INPUT"
{ }
"84753"
Returns: "INVALID INPUT"
{ 0 }
"0"
Returns: "INVALID INPUT"
{ 0 }
"000"
Returns: "INVALID INPUT"
{ 0, 1 }
"1000"
Returns: "1001"
{ 0, 9, 7, 5, 4, 8, 2, 1, 3 }
"987983186"
Returns: "INVALID INPUT"
{ 5, 1, 8, 0, 9, 2, 6, 3, 7, 4 }
"893713571"
Returns: "893713572"
{ 4, 2, 5, 1, 6, 8, 7, 9, 3 }
"1834295170"
Returns: "INVALID INPUT"
{ 9, 0, 7, 6, 3, 2, 4, 5, 1, 8 }
"0987654321"
Returns: "INVALID INPUT"
{ 1 }
"1"
Returns: "11"
{ 1 }
"111111111"
Returns: "1111111111"
{ 9, 4, 1, 0, 7, 3, 2, 8, 5, 6 }
"399"
Returns: "400"
{ 1, 3, 7 }
"11"
Returns: "13"
{ 3, 4 }
"3344434444"
Returns: "3344443333"
{ 0, 8 }
"0808000000"
Returns: "INVALID INPUT"
{ 3, 7, 1 }
"7331337713"
Returns: "7331337717"
{ 9, 3, 5 }
"5535555339"
Returns: "5535555353"
{ 2, 5, 8, 6 }
"5582625558"
Returns: "5582625562"
{ 4, 3, 2, 9 }
"3429293439"
Returns: "3429293442"
{ 5, 6, 2, 8, 7 }
"2275776628"
Returns: "2275776652"
{ 6, 9, 3, 0, 2 }
"9023366603"
Returns: "9023366606"
{ 1, 0, 3, 7, 8, 9 }
"8109819170"
Returns: "8109819171"
{ 9, 3, 4, 1, 2, 0 }
"0140192301"
Returns: "INVALID INPUT"
{ 2, 4, 7, 9, 8, 3, 0 }
"7943788447"
Returns: "7943788448"
{ 4, 6, 2, 5, 8, 7, 0 }
"8706724265"
Returns: "8706724266"
{ 8, 6, 7, 5, 4, 2, 9, 1 }
"8548441422"
Returns: "8548441424"
{ 9, 0, 1, 5, 3, 4, 6, 2 }
"2210242206"
Returns: "2210242209"
{ 3, 5, 6, 1, 7, 0, 2, 9, 8 }
"5527276981"
Returns: "5527276982"
{ 8, 6, 3, 4, 2, 9, 0, 5, 1 }
"1099126551"
Returns: "1099126552"
{ 2, 8, 5, 9, 0, 3, 1, 4, 7, 6 }
"2021708718"
Returns: "2021708719"
{ 7, 5, 8, 3, 1, 4, 6, 0, 2, 9 }
"3175987181"
Returns: "3175987182"
{ 7, 0, 3, 2, 8, 4, 6, 5, 1, 9 }
"1463207662"
Returns: "1463207663"
{ 6, 7, 8, 5, 9, 4, 0, 1, 2, 3 }
"7227100332"
Returns: "7227100333"
{ 6, 1, 7, 2, 4, 3, 8, 5, 0, 9 }
"5709639115"
Returns: "5709639116"
{ 3, 7, 0, 5, 4, 1, 9, 2, 6, 8 }
"1842275803"
Returns: "1842275804"
{ 3, 7, 0, 8, 5, 1, 6, 2, 4, 9 }
"3122037429"
Returns: "3122037430"
{ 4, 8, 5, 0, 2, 6, 9, 1, 7, 3 }
"9608337895"
Returns: "9608337896"
{ 8, 2, 3, 7, 6, 5, 0, 4, 9, 1 }
"8960747306"
Returns: "8960747307"
{ 5, 4, 1, 8, 0, 7, 3, 9, 6, 2 }
"1042279301"
Returns: "1042279302"
{ 5, 2, 1, 4, 3, 0, 9, 7, 8, 6 }
"8961686285"
Returns: "8961686286"
{ 6, 4, 5, 3, 1, 8, 7, 9, 2, 0 }
"8249165588"
Returns: "8249165589"
{ 7 }
"777"
Returns: "7777"
{1 }
"1"
Returns: "11"
{4, 6, 8 }
"468"
Returns: "484"
{9 }
"99999999"
Returns: "999999999"
{5, 3, 4 }
"033"
Returns: "INVALID INPUT"
{1, 0 }
"1111111111"
Returns: "10000000000"
{9 }
"9999999999"
Returns: "99999999999"
{9, 0 }
"999999999"
Returns: "9000000000"
{0, 9, 8 }
"9999999998"
Returns: "9999999999"
{1 }
"1111111111"
Returns: "11111111111"
{1, 9 }
"1999999999"
Returns: "9111111111"
{1, 9 }
"9999999999"
Returns: "11111111111"
{9 }
"999999999"
Returns: "9999999999"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"4147483647"
Returns: "4147483648"
{0, 9 }
"999999999"
Returns: "9000000000"
{9, 0 }
"9999999999"
Returns: "90000000000"
{2 }
"2222222222"
Returns: "22222222222"
{8, 0 }
"888888888"
Returns: "8000000000"
{9, 1 }
"9999999999"
Returns: "11111111111"
{8, 9 }
"123123"
Returns: "INVALID INPUT"
{0, 1 }
"01"
Returns: "INVALID INPUT"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"9999999999"
Returns: "10000000000"
{1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
"9999999999"
Returns: "10000000000"
{0, 2, 9 }
"9"
Returns: "20"
{1, 0 }
"10"
Returns: "11"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"9999999998"
Returns: "9999999999"
{ }
"231"
Returns: "INVALID INPUT"
{1, 2 }
"222222222"
Returns: "1111111111"
{1, 2 }
"2222222222"
Returns: "11111111111"
{1, 2 }
"99999999"
Returns: "INVALID INPUT"
{9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
"999"
Returns: "1000"
{0, 1, 2, 3, 4, 5, 6, 8, 9 }
"16"
Returns: "18"
{0, 1 }
"0"
Returns: "INVALID INPUT"
{3, 0 }
"033"
Returns: "INVALID INPUT"
{7, 9 }
"9999999999"
Returns: "77777777777"
{0, 3, 4 }
"033"
Returns: "INVALID INPUT"
{9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
"000"
Returns: "INVALID INPUT"
{ }
"123"
Returns: "INVALID INPUT"
{0, 1 }
"0111"
Returns: "INVALID INPUT"
{2, 3, 0, 7, 5 }
"7003277777"
Returns: "7003300000"
{1, 2 }
"22"
Returns: "111"
{1 }
"111111111"
Returns: "1111111111"
{0, 1 }
"11110"
Returns: "11111"
{0, 1, 9 }
"9999999999"
Returns: "10000000000"
{5, 3, 4, 0 }
"033"
Returns: "INVALID INPUT"
{8 }
"8888888888"
Returns: "88888888888"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"19"
Returns: "20"
{0, 1 }
"000"
Returns: "INVALID INPUT"
{8, 9 }
"8888888888"
Returns: "8888888889"
{0, 1, 2 }
"0011"
Returns: "INVALID INPUT"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"01"
Returns: "INVALID INPUT"
{5, 4 }
"10"
Returns: "INVALID INPUT"
{2, 3 }
"33"
Returns: "222"
{1, 2 }
"122"
Returns: "211"
{8, 9 }
"9999999999"
Returns: "88888888888"
{2, 1 }
"2222222222"
Returns: "11111111111"
{9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
"0001"
Returns: "INVALID INPUT"
{0, 1, 2 }
"021"
Returns: "INVALID INPUT"
{1, 0, 9 }
"9999999999"
Returns: "10000000000"
{0, 1, 2, 3, 4, 5, 6, 7, 8 }
"8888888888"
Returns: "10000000000"
{0, 3, 2, 4, 6, 1 }
"16"
Returns: "20"
{0, 2, 3, 4, 5 }
"355"
Returns: "400"
{0, 1, 2, 3, 4, 5 }
"12455"
Returns: "12500"
{9, 8, 1 }
"989"
Returns: "991"
{0, 1, 2 }
"01"
Returns: "INVALID INPUT"
{0, 1, 2, 3, 4 }
"244"
Returns: "300"
{8, 9 }
"8999"
Returns: "9888"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"016"
Returns: "INVALID INPUT"
{9, 1, 2, 3, 4, 5, 6, 7, 8, 0 }
"9999999998"
Returns: "9999999999"
{9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
"01"
Returns: "INVALID INPUT"
{0 }
"0000000000"
Returns: "INVALID INPUT"
{1, 2, 3, 4, 5, 6, 7, 8, 9 }
"999"
Returns: "1111"
{0, 2 }
"02"
Returns: "INVALID INPUT"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"199"
Returns: "200"
{ }
"1"
Returns: "INVALID INPUT"
{0, 5 }
"005"
Returns: "INVALID INPUT"
{1, 0 }
"01"
Returns: "INVALID INPUT"
{5, 6, 9 }
"9999999999"
Returns: "55555555555"
{8, 2 }
"8888888888"
Returns: "22222222222"
{1, 2 }
"1222222222"
Returns: "2111111111"
{2, 6, 3, 4, 1 }
"13"
Returns: "14"
{1, 2, 3, 7, 5 }
"7532112357"
Returns: "7532112371"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"2199"
Returns: "2200"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"139"
Returns: "140"
{2 }
"2"
Returns: "22"
{9, 8 }
"8989898989"
Returns: "8989898998"
{1, 0 }
"20"
Returns: "INVALID INPUT"
{0, 1, 2, 3 }
"01"
Returns: "INVALID INPUT"
{1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
"395999"
Returns: "396000"
{9, 0, 2 }
"999"
Returns: "2000"
{9, 1, 2, 3, 4, 5, 6, 7, 8, 0 }
"00"
Returns: "INVALID INPUT"
{0, 1 }
"001"
Returns: "INVALID INPUT"
{0 }
"00"
Returns: "INVALID INPUT"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"10"
Returns: "11"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
"29"
Returns: "30"
{1, 2, 3 }
"123"
Returns: "131"