我需要将输入字符串格式化为IP地址格式,所以我有以下代码;然而,数字是固定的,我不确定如何为单个输入生成不同的值。
其他的限制是确保没有一组数字超过255,但在这种情况下,我只想把它们放在四个单独的组中,每个组必须有1到3个成员。
**Vimal's question:**From provided string 19216801, I think you cant identify exact ip. It can be 192.168.0.1 or 19.216.80.1 or any other combination.
- 回答:**我不需要查找任何特定的IP,我只需要显示所有可能的组合。
- 示例格式**
其中一些组合如下所示
Expected result | number of input characters
1.1.1.1 4
....
1.1.1.2 5
1.1.2.1
1.2.1.1
2.1.1.1
....
1.1.1.3 6
1.1.3.1
1.3.1.1
3.1.1.1
....
2.2.2.1 7
2.2.1.2
....
2.2.2.2 8
3.2.2.1
1.2.2.3
....
2.2.2.3 9
3.3.2.1
1.2.3.3
....
3.3.3.1 10
3.3.1.3
3.1.3.3
1.3.3.3
....
3.3.3.2 11
3.3.2.3
3.2.3.3
....
3.3.3.3 12
- 代码**
String number = "19216801";
if (number.length() == 4) {
StringBuilder sb = new StringBuilder(number)
.insert(1, ".")
.insert(1, ".")
.insert(1, ".")
.insert(1, ".");
String output = sb.toString();
System.out.println(output);
}
if (number.length() == 8) {
StringBuilder sb = new StringBuilder(number)
.insert(2, ".")
.insert(2, ".")
.insert(2, ".")
.insert(2, ".");
String output = sb.toString();
System.out.println(output);
}
if (number.length() == 12) {
StringBuilder sb = new StringBuilder(number)
.insert(3, ".")
.insert(3, ".")
.insert(3, ".")
.insert(3, ".");
String output = sb.toString();
System.out.println(output);
}
7条答案
按热度按时间vzgqcmou1#
用下一种方法重新表述任务。
1.假设IP部分可以具有零数字,因此
...
是有效1.然后我们有number.length()- 3个元素,需要在任意位置放置3个点
1.设
a
、b
、c
为部件长度1.第一部分可以是任意长度
for(int a = 0; a < l; a++)
1.第二个必须更短
for(int b = 0; b < l-a; b++)
1.与第三个相同,总长度必须为l。因此l〉=a+b+c是约束。c
1.把点放在它的地方。
1.第一个点在第一部分之后(不要忘记达特第一步我们从每一部分中删去一个数字)。
1.第二部分在第一部分、第一点和第二部分之后((a +1)+ 1 +(B+1))
1.第三个相同。跳过第一部分(a+1)、点(+1)、第二部分(+B+1)、第二点(+1)和第三部分(c+1)= a+b+c+5
这很难解释,大多数代码来自我的思想背景,我只是写它。
nwo49xxi2#
在没有进一步信息的情况下,您必须依靠推测来从可变长度字符串形成IP地址。
您应该不允许这样做,并确保字符串长度为12个字符。
一旦您形成了一个候选IP地址,您可以使用以下 * 正则表达式 *(使用
String.matches
)验证它kq0g1dla3#
643ylb084#
下面是一个递归解决方案:
gmxoilav5#
下面是解决上述解决方案之一的错误ips问题的解决方案
edqdpe6u6#
此代码工作正常,请检查。
70gysomp7#
干净和清晰的代码工作正常。公共类IPGenerator {
}
输入:2562547
输出:2.56.25.47 2.56.254.7 25.6.25.47 25.6.254.7 25.62.5.4725.62.54.7