November 10, 2019

93. Restore IP Addresses

93. Restore IP Addresses

class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> res = new ArrayList<>();
        if (s == null || s.length() == 0) {
            return res;
        }
        StringBuilder sb = new StringBuilder();
        helper(0, 0, sb, s, res);
        return res;
    }

    private void helper(int digit, int count, StringBuilder sb, String s, List<String> res) {
        if (digit > 4) {
            return;
        }
        if (digit == 4) {
            if (count == s.length()) {
                res.add(sb.toString());
                return;
            } else {
                return;
            }
        }
        for (int i = 1; i <= 3; i++) {
            if (count + i > s.length()) {
                break;
            }
            String sub = s.substring(count, count + i);
            if (i != 1 && sub.charAt(0) == '0') {
                break;
            }
            if (i == 3 && Integer.parseInt(sub) > 255) {
                break;
            }
            int length = sb.length();
            sb.append(sub);
            if (digit != 3) {
                sb.append(".");
            }
            helper(digit + 1, count + i, sb, s, res);
            sb.setLength(length);
        }
    }
}
comments powered by Disqus