LeetCode : 93. Restore IP Addresses恢復ip

試題
Given a string containing only digits, restore it by returning all possible valid IP address combinations.

Example:

Input: “25525511135”
Output: [“255.255.11.135”, “255.255.111.35”]

代碼
DFS不難,但是邊界較多

class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> out = new ArrayList<String>();
        String[] temp = new String[4];
        if(s == null || s.length() > 12) return out;
        findAll(s, out, temp, 0, 0);
        return out;
    }
    private void findAll(String s, List<String> out, String[] temp, int start, int num){
        if(num == 4){
            out.add(String.join(".", temp));
            return;
        }
        for(int i = start + 1; i <= start + 3; i++){
//             i的長度不符合要求,超過了length
            if(i > s.length()) break;
//             當num=3是i必須是length
            if(num == 3 && i != s.length()) continue;
            
            String is = s.substring(start, i);
            Integer ii = Integer.valueOf(is);
            
//             數字超過255
            if(ii > 255) continue;
//             數字以0開始,但是有不等於0
            if(is.startsWith("0") && ii != 0) continue;
//             數字全是0,但是長度超過1
            if(is.length()>1 && ii  == 0) continue;
            
            temp[num] = is;
            findAll(s, out, temp, i, num+1);
        }
        return;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章