LeetCode——复原IP地址

Q:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。

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

A:
回溯:

    private List<String> res;

    public List<String> restoreIpAddresses(String s) {
        res = new LinkedList<>();
        if (s.length() < 4)
            return res;
        List<String> list = new LinkedList<>();
        back(s, 0, list);
        return res;
    }

    private void back(String s, int start, List<String> list) {
        if (list.size() == 4) {
            if (start == s.length()) {
                res.add(String.join(".", list));//用join更方便
            }
            return;
        }
        for (int i = 1; i < 4; i++) {//子串长度
            if (start + i > s.length())
                break;
            String sub = s.substring(start, start + i);
            if (sub.length() > 1 && sub.charAt(0) == '0')//避免有“000”,“010”等情况
                continue;
            int curr = Integer.parseInt(sub);
            if (curr <= 255) {
                list.add(sub);
                back(s, start + i, list);
                list.remove(list.size() - 1);
            }
        }
    }
posted @ 2020-05-07 15:43  Shaw_喆宇  阅读(201)  评论(0编辑  收藏  举报