93. Restore IP Addresses

36 篇文章 0 订阅
26 篇文章 0 订阅

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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值