leetcode:Restore IP Addresses

来源:互联网 发布:网络棋牌室违法吗 编辑:程序博客网 时间:2024/06/05 16:59


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

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

直接DFS了

public class Solution {            static char[] str;        static ArrayList<String> ans = new ArrayList<String>();        public ArrayList<String> restoreIpAddresses(String s) {            ArrayList<Integer> stack = new ArrayList<Integer>();            ans.clear();            str = s.toCharArray();            dfs(stack, 0, 0);            return ans;        }        static void dfs(ArrayList<Integer> stack, int dept, int pos) {            if (dept == 4 && pos == str.length) {                ans.add(getIP(stack));            } else if (dept < 4 && pos < str.length) {                                for (int i = pos; i < str.length; ++i) {                    if(str[pos] == '0' && pos != i)                        return;                    int temp = getNum(pos, i + 1);                    if (temp <= 255) {                        stack.add(temp);                        dfs(stack, dept + 1, i + 1);                        stack.remove(dept);                    } else {                        break;                    }                }            }        }        static int getNum(int start, int end) {            int num = 0;            for (int i = start; i < end; ++i) {                num *= 10;                num += str[i] - '0';            }            return num;        }        static String getIP(ArrayList<Integer> stk) {            String s = "";            s += stk.get(0);            for (int i = 1; i < stk.size(); ++i) {                s += ".";                s += stk.get(i);            }            return s;        }}


0 0