• [LeetCode] 93. Restore IP Addresses Java


    题目:

    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地址的点被消除了,根据剩下的数字字符串恢复出可能的ip地址。对于一个ip地址,分为四段,每段最多为三位,最少为一位,每段都在0-255之间.用一个整数start记录当前的段数,当第三段完之后,只需要判断第四段是否合法即可。判断字符串是否合法,如果第一个字符为'0',需要判断是否全为0;如果第一个字符不为'0',判断是否在0-255之间。

    代码:

    class Solution {
        //对于一个ip地址,分为四段,每段最多为三位,最少为一位,每段都在0-255之间.用一个整数start记录当前的段数,当第三段完之后,只需要判断第四段是否合法即可
        public List<String> restoreIpAddresses(String s) {
            List<String> list = new ArrayList<>();
            if(s.length()<4 || s.length() >12)
                return list;
    
            dfs(s,0,"",list);
            return list;
        }
    
        private void dfs(String s,int start,String res,List<String> list){
            if(start >3) return;
            if(start == 3 && isValid(s)){
                list.add(res + s);
                return;
            }
    
            for(int i=0;i<3 && i<s.length();i++){       //这里记得还要判断不能超出字符串范围
                String sub = s.substring(0,i+1);
                if(isValid(sub))
                    dfs(s.substring(i+1,s.length()),start+1,res + sub + ".",list);
            }
        }
    
        private boolean isValid(String s){          //判断字符串是否合法,如果第一个字符为'0',需要判断是否全为0;如果第一个字符不为'0',判断是否在0-255之间
            if(s.length()==0) return false;
            if(s.charAt(0)=='0')
                return s.equals("0");
            if(Integer.parseInt(s)<=255 && Integer.parseInt(s)>0)
                return true;
            else return false;
        }
    }
  • 相关阅读:
    svn使用教程各种杂七杂八!
    Python+Django+Eclipse 在Windows下快速网站
    Python Django 框架开发
    【多肉】播种育苗 友情推荐:教你如何买到真种子
    (十一)Json文件配置
    (十)命令行配置
    (九)配置介绍
    visual studio 注释模板
    使用批处理自动发布IIS站点,基于IIS7及以上
    Win10系统无法安装可选功能提示错误代码0x800F081F的解决方法
  • 原文地址:https://www.cnblogs.com/271934Liao/p/7991268.html
Copyright © 2020-2023  润新知