• 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)));
    
                }
            }
    
        }
    
        
    
    }
  • 相关阅读:
    winform 通过左右键,或enter键做类似Tab键的功能
    向表中插入查询结果
    创建Oracle job的一些注意事项
    多数据库独立主机的配置
    图形码验证
    JavaScript中的trycatchfinally
    ASP.Net生成后台脚本的问题的解决办法
    10个你未必知道的CSS技巧
    学习JQuery的$.Ready()与OnLoad事件比较[转]
    风雨20年:我所积累的20条编程经验[csdn]
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/5981923.html
Copyright © 2020-2023  润新知