93. Restore IP Addresses

来源:互联网 发布:软件自动化测试流程 编辑:程序博客网 时间:2024/06/07 06:07

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

因为ip地址最大是255,占3位字符,所以可以初始化a,b,c,d四个变量,从1遍历到3,分割字符串。当a+b+c+d等于与啊字符串长度时,说明分割完毕。把分割出来的子字符串转化成数字,如果全都小于255,并且转化成数字的所有子字符串的长度等于原字符串长度(因为“000”转化成数字之后是“0”,会减小),就把这个符合要求的ip驾到结果里。代码如下:

public class Solution {    public List<String> restoreIpAddresses(String s) {        List<String> res = new ArrayList<String>();        StringBuilder sb = new StringBuilder();        int len = s.length();        for (int a = 1; a < 4; a ++)        for (int b = 1; b < 4; b ++)        for (int c = 1; c < 4; c ++)        for (int d = 1; d < 4; d ++) {            if (a + b + c + d == len) {                int A = Integer.parseInt(s.substring(0, a));                int B = Integer.parseInt(s.substring(a, a + b));                int C = Integer.parseInt(s.substring(a + b, a + b + c));                int D = Integer.parseInt(s.substring(a + b + c, a + b + c + d));                if (A <= 255 && B <= 255 && C <= 255 && D <= 255) {                    sb.append(A).append('.').append(B).append('.').append(C).append('.').append(D);                    if (sb.length() == len + 3)                        res.add(sb.toString());                    sb.delete(0, sb.length());                }            }        }        return res;    }}

0 0
原创粉丝点击