自适应 网站开发,网站设计制作新参考价格,ui设计工作室,扬中网站设计公司一:题目 二:上码
class Solution {/**思路: 1.跟分割字符串差不多,但是我们需要记录添加的.的个数 当其个数等于3的时候 我们就已经切割成4段了。2.判断字符是否合法1:以0开头的数字不合法2:遇见非数字字符不合法3:大于255不合法*/private ListString an…一:题目 二:上码
class Solution {/**思路: 1.跟分割字符串差不多,但是我们需要记录添加的.的个数 当其个数等于3的时候 我们就已经切割成4段了。2.判断字符是否合法1:以0开头的数字不合法2:遇见非数字字符不合法3:大于255不合法*/private ListString ans new ArrayList();public boolean isValid(String str,int start,int end) {if (start end) return false;//防止字符串的起始位置大于字符串长度//这里使保证前导树不为0,同时单个0是可以的if (str.charAt(start) 0 start ! end) return false;int num 0;for (int i start; i end; i) {//字符也是对应数字的 如果超过范围那就不是字符对应数字的范围了if (str.charAt(i) 0 || str.charAt(i) 9) return false;num num * 10 (str.charAt(i)-0);if (num 255) return false;}return true;}public void getAns(String str,int st,int point) {if (point 3) {//字符串中3个逗号就可以将字符串分割成4段if (isValid(str,st,str.length()-1)) { System.out.println(str);ans.add(str);}return ;} for (int i st; i str.length(); i) {if (isValid(str,st,i)) {str str.substring(0,i1) . str.substring(i1);point;getAns(str,i2,point);//这里st2是因为我们上方还插入了一个 . ;point--;//a b c . d//0 1 2 3 4 想要截取为abcd 那么就是[0,3) [4,最后) 其中i为2;str str.substring(0,i1) str.substring(i2);} else {//如果遇见不合法的字段那就没必要再进行横向遍历了break;}}}public ListString restoreIpAddresses(String s) {getAns(s,0,0);return ans;}
}