java 93.恢复IP地址(#)。java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 93.恢复IP地址(#)。java相关的知识,希望对你有一定的参考价值。

public class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> ret=new ArrayList<>();
        int num=0;
        
        if(s.length()<4||s.length()>12)return ret;
        
        char[] array=s.toCharArray();
        char[] path=new char[s.length()+3];
        
        for(int i=0;i<3;i++){
         
            num=num*10+array[i]-'0';
            if(num>255) break;
            path[i]=array[i];
            helper(array,path,i+1,i+1,0,ret);
            
            if(num==0) break;
            
            
        }
        
        return ret;
        
    }
    private void helper(char [] array, char[] path, int length, int idx, int count, List<String> ret){
        
        if(count==3){
            if(idx==array.length){
                ret.add(new String(path));
            }
            
            return ;
        }
        
        path[length]='.';
        int num=0;
        for(int i=idx;i<Math.min(idx+3,array.length);i++){
              
            num=num*10+array[i]-'0';
            if(num>255) break;
            
            path[length+1+(i-idx)]=array[i];
            
            helper(array,path,length+1+(i-idx)+1,i+1,count+1,ret);
            
            if(num==0){
                break;
            }
            
            
        }
        
    }
    
}
public class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> res = new ArrayList<String>();
        int len = s.length();
        for(int i = 1; i<4 && i<len-2; i++){
            for(int j = i+1; j<i+4 && j<len-1; j++){
                for(int k = j+1; k<j+4 && k<len; k++){
                    String s1 = s.substring(0,i), s2 = s.substring(i,j), s3 = s.substring(j,k), s4 = s.substring(k,len);
                    if(isValid(s1) && isValid(s2) && isValid(s3) && isValid(s4)){
                        res.add(s1+"."+s2+"."+s3+"."+s4);
                    }
                }
            }
        }
        return res;
    }
    public boolean isValid(String s){
        if(s.length()>3 || s.length()==0 || (s.charAt(0)=='0' && s.length()>1) || Integer.parseInt(s)>255)
            return false;
        return true;
    }
}

以上是关于java 93.恢复IP地址(#)。java的主要内容,如果未能解决你的问题,请参考以下文章

java 93.恢复IP地址(#)。java

java 93.恢复IP地址(#)。java

java 93.恢复IP地址(#)。java

java 93.恢复IP地址(#)。java

java 93.恢复IP地址(#)。java

java 93.恢复IP地址(#)。java