[leetcode]93. Restore IP Addresses

还是backtrack的老套路,这里稍微变型了一下。

class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> res=new ArrayList<>();
        
        backtrack(res,new StringBuffer(),s,0,0);
        return res;
        
        
    }
    
    public void backtrack(List<String> res,StringBuffer str,String s,int level,int index){
        if(level>4||index>s.length()) return;
        if(level==4&&index==s.length()){
            String ip=str.toString();
            res.add(ip);
            return;
        }
        
        for(int i=1;i<=3;i++){
            if(index+i > s.length()) break;
            String numStr=s.substring(index,index+i);
            int num=Integer.parseInt(numStr);
            if(i==1||i==2&&num>=10&&num<=99||i==3&&num>=100&&num<=255){
                str.append(numStr);
                if(level<3)str.append(".");
                backtrack(res,str,s,level+1,index+i);
                if(level<3)str.deleteCharAt(str.length()-1);
                str.delete(str.length()-i,str.length());
            }
        }
            
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_36869329/article/details/89221617
今日推荐