LeetCode 59 Restore IP Addresses

本文探讨了如何从仅包含数字的字符串中恢复所有可能的有效IP地址组合,并详细解释了算法实现过程。通过实例演示了从给定字符串 '25525511135' 中获取有效IP地址的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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地址由四部分组成,每一部分从0到255之间的数字,因此是1到3位都有可能。

从第一部分开始,尝试1位到3位,接着第二部分,第三部分,最后剩下的是第四部分。只有当前部分合格,才进入下一部分的检验,知道最后,把合格的IP地址部分中间加"."存入最后的结果集。

public class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> result = new ArrayList<String>();
        if(s==null || s.length()<4 || s.length()>12) return result;
        
        for(int i=1; i<4; i++){
            String first = s.substring(0, i);
            if(!isValid(first))
                continue;
            for(int j=1; j<4&&i+j<s.length(); j++){
                String second = s.substring(i,i+j);
                if(!isValid(second))
                    continue;
                for(int k=1; k<4&&i+j+k<s.length(); k++){
                    String third = s.substring(i+j, i+j+k);
                    String fourth = s.substring(i+j+k, s.length());
                    if(!isValid(third) || !isValid(fourth))
                        continue;
                    String ip = first+"."+second+"."+third+"."+fourth;
                    result.add(ip);
                }
            }
        }
        return result;
    }
    
    private boolean isValid(String s){
        if(s.length()>1 && s.charAt(0)=='0')
            return false;
        int ip = Integer.parseInt(s);
        if(ip>=0 && ip<=255)
            return true;
            
        return false;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值