重点讲一下递归方法,因为是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
网友评论