题目:给定一个数字组成的字符串 str,返回有多少种合法的 IPV4 组合。
举例:
str = “245111”,只有一种合法 IPV4 组合:245.1.1.1,所以返回 1str = “11111”,所有合法的 IPV4 组合为:
1.1.1.11
1.1.11.1
1.11.1.1
11.1.1.1
所以返回 4str = “100111”,所有合法的 IPV4 组合为:
100.1.1.1
所以返回1注意:10.01.1.1,并不合法,因为 IPV4 的部分不会出现 01这样的情况。
分析:IPV4 块不能超过 4 个,对于当前 index 指向的字符 来说,有三种情况
1、index 指向的字符自己作为一块;
2)index 和 index + 1 作为一块 【条件是 index != 0 才行】
3)index 和 index + 1、index + 2 作为一块 【条件是 它们组成的数 要 < 256】
这三种情况下,后面能形成多少有效 ip,三个累加就是当前此 index 及其后面能形成有效 ip 的种类数。
-
递归实现【更好理解】
public class IPV4Num {
public static int getI