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地址(所有情况)。

    需要注意的是:

    1、如果0作为开头,那么只能是0。

    2、不能超过255。

    3、注意不要越界。

    尽量运用数组,速度达到最快1ms。

    public class Solution {
    
    
        List result = new ArrayList<String>();
        char[] IP ;
    
    public List<String> restoreIpAddresses(String s) {
        int len = s.length();
        if( len < 4 || len > 12)
            return result;
        IP = s.toCharArray();
    
        getReult(0,0,new char[len+3]);
    
        return result;
        
        }
    
        public void getReult(int num,int pos,char[] ans){
            
            if( num != 3){
                if ( pos-num < ans.length-3 && IP[pos-num] == '0'){
                    ans[pos] = '0';
                    ans[pos+1] = '.';
                    getReult(num+1,pos+2,ans);
                    return ;
                }
                for( int i = pos ; i < pos+2 && i<ans.length-3+num;i++){
                    ans[i] = IP[i-num];
                    ans[i+1] = '.';
                    getReult(num+1,i+2,ans);
                }
                if( ans.length-3+num-pos >= 3){
                    int tt = (IP[pos-num]-'0')*100+(IP[pos-num+1]-'0')*10+(IP[pos-num+1]-'0');
                    if( tt <= 255 ){
                        ans[pos+2] = IP[pos+2-num];
                        ans[pos+3] = '.';
                        getReult(num+1,pos+4,ans);
                    }
                }
    
            }else{
                
                int len = ans.length-pos;
                if( len < 1 || len > 3)
                    return ;
                if ( IP[pos-num] == '0' && len != 1)
                    return ;
                else{
                    if( len == 3 ){
                        int tt = (IP[pos-num]-'0')*100+(IP[pos-num+1]-'0')*10+(IP[pos-num+2]-'0');
                        if( tt > 255 )
                            return ;
                    }
                    for( int i = pos; i<ans.length;i++){
                        ans[i] = IP[i-3];
                    }
                    result.add( new String ( String.valueOf(ans)));
    
                }
            }
    
        }
    
        
    
    }
  • 相关阅读:
    sql测试
    sql时间和日期函数
    递归算法
    冒泡排序
    Ajax
    省市区下拉框三级联动
    Repeater用法
    WIndows form Linq多表联合
    C# 递归算羊
    C# 定义一个学生的结构体,输入学生信息,学号,姓名,身高,按身高排序输出
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/5981923.html
Copyright © 2011-2022 走看看