Backtracking——93. 复原IP地址

重点讲一下递归方法,因为是ip,所以一共有四组,所以递归结束的条件就看是不是进行了4次,能加入结果集的条件就是,为4组之后,ip的string长度为0 ,即都用了。

如果没有到达长度4的话,我们要做的就是用一个循环,长度小于ip的字符串,且控制i小于等于2,因为ip最大只能是3位,我们首先判断在长度大于1的情况下,第一个是不是为0(i != 0 && s.charAt(0) == '0'),如果是则break;然后我们取出子串s.substring(0, i + 1),首先我们判断这个值是不是小于255——Integer.valueOf(cur) <= 255,小于则可以加入,加入之前我们需要先看看存结果的长度是不是大于0,大于0,要把这个子串加了点再append进去。

继续递归调用,这里我们把ip 字符串截取一下,把判断过的去掉。

递归之后,我们恢复,用delete——str.delete(str.length() - cur.length(), str.length());

学习的点:

1 substring而不是subString;

2 str.delete(int  a,int  b)有两个参数,使用时删除索引从a开始(包含a)到b(不包含b)的所有字符.


代码:

https://github.com/hanleirx/LeetCode/blob/master/93.%20%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80

你可能感兴趣的:(Backtracking——93. 复原IP地址)