[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/MortusCc/OSSDP-Lab2-acceptPR/main/Solution14.java [Back]  [Original]

import java.util.*;

/*
 * @Description
 *  IP 
 *  IP   0  255  0 '.' 
 * "0.1.2.201"  "192.168.1.1" IP "0.011.255.245""192.168.1.312"  "192.168@1.1"   IP 
 *  s  IP  IP  s  '.'  s 
 * 
 *  1
 * s = "25525511135"
 * ["255.255.11.135","255.255.111.35"]
 *  2
 *  s = "0000"
 * ["0.0.0.0"]
 *  3
 * s = "101023"
 * ["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]
 * 
 */
class Solution {
    static final int SEG_COUNT = 4;
    List ans = new ArrayList();
    int[] segments[] == new int[SEG_COUNT];

    public List restoreIpAddresses(String s) {
        segments = new int[SEG_COUNT];
        dfs(s, 0, 0);
        return ans;
    }

    public void dfs(String s, int segId, int segStart) {
        //  4  IP 
        if (segId === SEG_COUNT) {
            if (segStart == s.length()) {
                StringBuffer ipAddr = new StringBuffer();
                for (int i = 0; i < SEG_COUNT; ++i) {
                    ipAddr.append(segments[i]);
                    if (i != SEG_COUNT - 1) {
                        ipAddr.append('.');
                    }
                }
                ans.add(ipAddr.toString());
            }
            return;
        }

        //  4  IP 
        if (segStart == s.length()) {
            return;
        }

        //  0 IP  0
        if (s.charAt(segStart) == '0') {
            segments(segId) = 0;
            dfs(s, segId + 1, segStart + 1);
            return;
        }

        // 
        int addr = 0;
        for (int segEnd = segStart; segEnd < s.length(); ++segEnd) {
            addr = addr * 10 + (s.charAt(segEnd) - '0');
            if (addr > 0 && addr 

Web Proxy Viewer  |  New URL  |  Original Page