zoukankan      html  css  js  c++  java
  • [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;
        }
    }
  • 相关阅读:
    初学微信小程序 TodoList
    设计一个基于svg的涂鸦组件(一)
    基于51单片机的12864驱动
    java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
    ios UIWebView 播放优酷土豆视频
    VMware Player 使用错误集锦
    Django 使用UEditor
    Entity Framework底层操作封装V2版本号(3)
    cocos2dx笔记1:概述
    oracle10g精简版安装步骤
  • 原文地址:https://www.cnblogs.com/271934Liao/p/7991268.html
Copyright © 2011-2022 走看看