Problem Statement
A computer connected to the internet is identified by an IP address. The most common way of displaying an IP address is the dotted quad method: four eight-bit (0-255 in base ten) numbers separated by periods.
Someone has given you a possible IP address, but the periods have been removed, leaving only a string of digits. Write a class IPConverter with a method possibleAddresses that takes a
The numbers in each of the four positions can have any integer value between zero and 255, inclusive. However, a number may not have leading zeroes. For example, the digits 1902426 can form 1.90.24.26, 19.0.24.26, 190.2.4.26, and other IP addresses (see Example 0). However, it cannot form 19.02.4.26.
Definition
- Class:
- IPConverter
- Method:
- possibleAddresses
- Parameters:
- String
- Returns:
- String[]
- Method signature:
- String[] possibleAddresses(String ambiguousIP)
- (be sure your method is public)
Constraints
- ambiguousIP will contain between 0 and 50 characters, inclusive.
- Each character of ambiguousIP will be between '0' and '9', inclusive.
Examples
"1902426"
Returns: { "1.90.24.26", "1.90.242.6", "19.0.24.26", "19.0.242.6", "190.2.4.26", "190.2.42.6", "190.24.2.6" }
This is the example from the problem statement.
"12345678"
Returns: { "1.234.56.78", "12.34.56.78", "123.4.56.78", "123.45.6.78", "123.45.67.8" }
"255255255255"
Returns: { "255.255.255.255" }
"000"
Returns: { }
"0000"
Returns: { "0.0.0.0" }
""
Returns: { }
"0186290"
Returns: { "0.18.62.90", "0.186.2.90", "0.186.29.0" }
"11111111"
Returns: { "1.1.111.111", "1.11.11.111", "1.11.111.11", "1.111.1.111", "1.111.11.11", "1.111.111.1", "11.1.11.111", "11.1.111.11", "11.11.1.111", "11.11.11.11", "11.11.111.1", "11.111.1.11", "11.111.11.1", "111.1.1.111", "111.1.11.11", "111.1.111.1", "111.11.1.11", "111.11.11.1", "111.111.1.1" }
"10001"
Returns: { "10.0.0.1" }
"3082390871771742784899852251737850570843857369760"
Returns: { }
"1111111111111111111111111111111111111111111111111"
Returns: { }
"256255255"
Returns: { "2.56.255.255", "25.6.255.255", "25.62.55.255" }
"190811305"
Returns: { "190.81.130.5" }
"62313114"
Returns: { "6.23.13.114", "6.23.131.14", "6.231.3.114", "6.231.31.14", "62.3.13.114", "62.3.131.14", "62.31.3.114", "62.31.31.14" }
"2562"
Returns: { "2.5.6.2" }
"10122419425"
Returns: { "101.224.194.25" }
"43405288"
Returns: { "43.40.52.88" }
"10850182184"
Returns: { "108.50.182.184" }
"12923203125"
Returns: { "129.23.203.125" }
"381144222"
Returns: { "3.81.144.222", "38.1.144.222", "38.11.44.222", "38.114.4.222", "38.114.42.22" }
"11913943197"
Returns: { "119.139.43.197" }
"17143132161"
Returns: { "17.143.132.161", "171.43.132.161" }
"151123126128"
Returns: { "151.123.126.128" }
"16678181225"
Returns: { "166.78.181.225" }
"14149222236"
Returns: { "14.149.222.236", "141.49.222.236" }
"201103153116"
Returns: { "201.103.153.116" }
"23818414247"
Returns: { "238.184.14.247", "238.184.142.47" }
"11589248213"
Returns: { "115.89.248.213" }
"9718083191"
Returns: { "97.180.83.191" }
"14993220"
Returns: { "1.49.93.220", "14.9.93.220", "14.99.3.220", "14.99.32.20", "149.9.3.220", "149.9.32.20", "149.93.2.20", "149.93.22.0" }
"114169271"
Returns: { "114.16.92.71", "114.169.2.71", "114.169.27.1" }
"7750126214"
Returns: { "77.50.126.214" }
"125150117183"
Returns: { "125.150.117.183" }
"2364020111"
Returns: { "236.40.20.111", "236.40.201.11" }
"251153173210"
Returns: { "251.153.173.210" }
"1041281756"
Returns: { "104.128.17.56", "104.128.175.6" }
"2271894541"
Returns: { "227.189.45.41" }
"22877238113"
Returns: { "228.77.238.113" }
"931985739"
Returns: { "93.198.57.39" }
"1966200173"
Returns: { "19.66.200.173", "196.6.200.173" }
"31542482"
Returns: { "3.154.24.82", "3.154.248.2", "31.54.24.82", "31.54.248.2" }
"1401561543"
Returns: { "140.156.15.43", "140.156.154.3" }
"1922047222"
Returns: { "19.220.47.222", "192.20.47.222", "192.204.7.222", "192.204.72.22" }
"2481468252"
Returns: { "248.14.68.252", "248.146.8.252", "248.146.82.52" }
"3123113934"
Returns: { "31.231.139.34" }
"21624969225"
Returns: { "216.249.69.225" }
"6318924048"
Returns: { "63.189.240.48" }
"21318212721"
Returns: { "213.182.127.21" }
"33203250193"
Returns: { "33.203.250.193" }
"217134171164"
Returns: { "217.134.171.164" }
"14819738120"
Returns: { "148.197.38.120" }
"00000"
Returns: { }
"1092426"
Returns: { "10.9.24.26", "10.9.242.6", "10.92.4.26", "10.92.42.6", "109.2.4.26", "109.2.42.6", "109.24.2.6" }
"19002426"
Returns: { "190.0.24.26", "190.0.242.6" }
"100234"
Returns: { "1.0.0.234", "10.0.2.34", "10.0.23.4", "100.2.3.4" }
"100001"
Returns: { "100.0.0.1" }
"00010"
Returns: { "0.0.0.10" }
"255255255255"
Returns: { "255.255.255.255" }
"55555555555555555555555555555555555555555555555555"
Returns: { }
"2199023255552111"
Returns: { }
"00000000000"
Returns: { }
"00000"
Returns: { }
"1092426"
Returns: { "10.9.24.26", "10.9.242.6", "10.92.4.26", "10.92.42.6", "109.2.4.26", "109.2.42.6", "109.24.2.6" }
"19002426"
Returns: { "190.0.24.26", "190.0.242.6" }
"100234"
Returns: { "1.0.0.234", "10.0.2.34", "10.0.23.4", "100.2.3.4" }
"100001"
Returns: { "100.0.0.1" }
"00010"
Returns: { "0.0.0.10" }
"255255255255"
Returns: { "255.255.255.255" }
"55555555555555555555555555555555555555555555555555"
Returns: { }
"2199023255552111"
Returns: { }
"00000000000"
Returns: { }