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)));

            }
        }

    }

    

}
原文地址:https://www.cnblogs.com/xiaoba1203/p/5981923.html