回溯算法-----复原IP地址(Java版本)

题目

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。

 

示例:

输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]

解决方法

    //回溯用
    LinkedList linkedList = new LinkedList<>();
    //保存结果用
    List result = new ArrayList<>();

    public List restoreIpAddresses(String s) {
        dfs(s,0,0);
        return result;

    }

    public void dfs(String string,int dort,int curIndex){
        //判断点的个数 如果是3个点 都满足 那么就是真的ip地址 
        // 回溯   结束的条件 就是具备三个点
        //对于每一个点  各种情况  如果说其中有一个后续直接不满足 回溯

        //如果当前的index 超过了字符串的长度  返回
        if (curIndex >= string.length()) {
            return;
        }

        //如果当前的字符串是0 那么后面就不能增加字符串了,因为不能出现01.01.01.01 这种
        int max = string.charAt(curIndex) == '0' ? 1 : 3;
        for (int i = 1; i <= max; i++) {
            //保证不要超过整个字符串大小
            if (curIndex + i > string.length()) {
                continue;
            }
            //截取字符串
            String substring = string.substring(curIndex, curIndex + i);
            //如果是合理的字符串 (0

你可能感兴趣的:(算法,java)