Restore IP Addresses

2020-09-24  本文已影响0人  瞬铭

https://leetcode.com/problems/restore-ip-addresses/
给定一个字符串,求能组成的所有的ip段

public List<String> restoreIpAddresses(String s) {
        List<String> out = new ArrayList<String>();
        List<List<String>> res = new ArrayList<List<String>>();
        restoreIpAddresses2Helper(s, out, res);
        List<String> ll = new ArrayList<String>();


        for (List<String> info : res) {
            String[] tmp = info.toArray(new String[info.size()]);
            ll.add(String.join(".", tmp));
        }
        return ll;
    }

    public void restoreIpAddresses2Helper(String s, List<String> out, List<List<String>> res) {
        if (out.size() == 4) {
            if (s.equals("")) {
                res.add(new ArrayList<String>(out));
            }
            return;
        }

        for (int i = 1; i <= Math.min(3, s.length()); i++) {
            String tmp = s.substring(0, i);

            // 0开头的两位、三位数字不要了
            if (i > 1 && s.startsWith("0")) {
                break;
            }

            // 大于255 不要了
            if (Integer.valueOf(tmp) > 255) {
                break;
            }
            out.add(tmp);
            restoreIpAddresses2Helper(s.substring(i), out, res);
            out.remove(out.size() - 1);
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读