Restore IP Addresses - Leetcode

来源:互联网 发布:php工作原理 编辑:程序博客网 时间:2024/06/06 15:47

public class Solution {   public List<String> restoreIpAddresses(String s) {        List<String> result = new ArrayList<>();        String ip = "";        restoreIpAddressesHelper(s,result,ip,0,0);        return result;    }    private void restoreIpAddressesHelper(String s, List<String> result, String ip, int index, int step){        //end condition        if(step == 4 && index == s.length()){            result.add(ip.substring(0,ip.length()-1));            return;        }                //convergence condition        if(s.length()-index > (4-step)*3)        return;        if(s.length()-index < (4-step))        return;                //procedure        int num=0;        for(int i=index; i<index+3 && i<s.length(); i++){            num = num*10+(s.charAt(i)-'0');            if(num<256){                ip += s.charAt(i);                restoreIpAddressesHelper(s,result,ip+'.',i+1,step+1);            }                        if(num == 0)               break;        }    }}


分析:给定一个数字的string 数组,返回所有可能的IP地址。深搜确定结果,同时回溯获取所有可能的结果

DP思路,前一个确定的片段都会影响下一个片段的结果,但是没有规律可循。DP失败


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)


0 0
原创粉丝点击